{"library":"pyxb-x","title":"PyXB-X","description":"PyXB-X (\"pixbix\") is a pure Python package that generates Python source code for classes that correspond to data structures defined by XMLSchema. It is a re-release of PyXB 1.2.6 under a distinct namespace (`pyxb_x`) to avoid dependency conflicts. The project appears to be in maintenance mode, with its last PyPI release in March 2020 and its upstream PyXB project showing limited recent activity.","language":"python","status":"maintenance","last_verified":"Fri Apr 17","install":{"commands":["pip install pyxb-x"],"cli":{"name":"pyxbgen","version":"pyxbgen from PyXB 1.2.6"}},"imports":["from pyxb_x.gen.pyxbgen import PyXBGenerator","import pyxb_x.binding.basis","import my_generated_bindings_module\nparsed_obj = my_generated_bindings_module.CreateFromDocument(xml_data)"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nimport sys\nimport subprocess\nimport tempfile\nimport shutil\n\n# 1. Define a simple XML Schema (XSD)\nxsd_content = \"\"\"<?xml version=\\\"1.0\\\"?>\n<xs:schema xmlns:xs=\\\"http://www.w3.org/2001/XMLSchema\\\">\n  <xs:element name=\\\"person\\\">\n    <xs:complexType>\n      <xs:sequence>\n        <xs:element name=\\\"name\\\" type=\\\"xs:string\\\"/>\n        <xs:element name=\\\"age\\\" type=\\\"xs:int\\\"/>\n      </xs:sequence>\n    </xs:complexType>\n  </xs:element>\n</xs:schema>\n\"\"\"\n\n# 2. Set up temporary directory for XSD and generated bindings\ntemp_dir = tempfile.mkdtemp()\nxsd_path = os.path.join(temp_dir, 'example.xsd')\nwith open(xsd_path, 'w') as f:\n    f.write(xsd_content)\n\nbinding_module_name = 'my_example_bindings'\noutput_dir = temp_dir\n\n# 3. Use pyxbgen to generate Python bindings\n#    The `pyxbgen` command-line tool is installed with `pyxb-x`.\n#    If `pyxbgen` is not found in PATH, use `python -m pyxb_x.gen.pyxbgen`.\n\n# Determine the correct command for pyxbgen\ntry:\n    subprocess.check_call(['pyxbgen', '--version'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)\n    pyxbgen_cmd = 'pyxbgen'\nexcept (subprocess.CalledProcessError, FileNotFoundError):\n    pyxbgen_cmd = [sys.executable, '-m', 'pyxb_x.gen.pyxbgen']\n\ngenerate_command_args = [\n    f'--schema-location={xsd_path}',\n    '--binding-language=python',\n    f'--module={binding_module_name}',\n    f'--output-directory={output_dir}'\n]\n\nfull_command = [pyxbgen_cmd] + generate_command_args if isinstance(pyxbgen_cmd, list) else [pyxbgen_cmd] + generate_command_args\n\nprint(f\"Running generation command: {' '.join(full_command)}\")\nsubprocess.check_call(full_command)\nprint(f\"Bindings generated to: {output_dir}/{binding_module_name}.py\")\n\n# 4. Add the output directory to sys.path to import the generated module\nsys.path.insert(0, output_dir)\n\n# 5. Import and use the generated bindings\nimport my_example_bindings\n\n# Create an instance of the 'person' element\np = my_example_bindings.person(name=\"Alice\", age=30)\n\n# Serialize to XML\nxml_doc = p.toxml('utf-8', element_name='person')\nprint(\"\\nGenerated XML:\")\nprint(xml_doc.decode('utf-8'))\n\n# Parse XML back into a Python object\nparsed_p = my_example_bindings.CreateFromDocument(xml_doc)\nprint(f\"\\nParsed back: Name={parsed_p.name}, Age={parsed_p.age}\")\n\n# Clean up temporary files\nshutil.rmtree(temp_dir)\nprint(\"\\nCleaned up temporary files.\")","lang":"python","description":"This quickstart demonstrates how to define a simple XML Schema (XSD), use the `pyxbgen` command-line tool to generate Python binding classes, and then use those classes to create Python objects, serialize them to XML, and parse XML back into objects.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}