1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
#!/usr/bin/env python3
import json
import os
import xml.dom.minidom
def parse_json_file(file_path):
"""Parses a JSON file and returns the data as Python data structures."""
try:
with open(file_path, 'r') as file:
data = json.load(file)
return data
except FileNotFoundError:
print(f"Error: File not found at {file_path}")
return None
except json.JSONDecodeError:
print(f"Error: Invalid JSON format in {file_path}")
return None
def create_xml_file_minidom(filename, list4217):
"""Creates an XML file using xml.dom.minidom."""
doc = xml.dom.minidom.Document()
root = doc.createElement("xsd:schema")
root.setAttribute("xmlns:xsd", "http://www.w3.org/2001/XMLSchema")
root.setAttribute("xmlns:clm5ISO42173A", "urn:un:unece:uncefact:codelist:standard:5:ISO42173A:2010-04-07")
root.setAttribute("xmlns:ccts", "urn:un:unece:uncefact:documentation:standard:CoreComponentsTechnicalSpecification:2")
root.setAttribute("targetNamespace", "urn:un:unece:uncefact:codelist:standard:5:ISO42173A:2010-04-07")
root.setAttribute("elementFormDefault", "qualified")
root.setAttribute("attributeFormDefault", "unqualified")
root.setAttribute("version", "7.0")
doc.appendChild(root)
element1 = doc.createElement("xsd:element")
element1.setAttribute("name", "ISO3AlphaCurrencyCode")
element1.setAttribute("type", "clm5ISO42173A:ISO3AlphaCurrencyCodeContentType")
root.appendChild(element1)
content1 = doc.createElement("xsd:simpleType")
content1.setAttribute("name", "ISO3AlphaCurrencyCodeContentType")
root.appendChild(content1)
content2 = doc.createElement("xsd:restriction")
content2.setAttribute("base", "xsd:token")
content1.appendChild(content2)
for currency in list4217:
current1 = doc.createElement("xsd:enumeration")
current1.setAttribute("value", currency.get("alpha_3"))
current2 = doc.createElement("xsd:annotation")
current1.appendChild(current2)
current3 = doc.createElement("xsd:documentation")
current2.appendChild(current3)
current4 = doc.createElement("ccts:Name")
current3.appendChild(current4)
current4.appendChild(doc.createTextNode(currency.get("name")))
content2.appendChild(current1)
xml_str = doc.toprettyxml(indent=" ")
with open(filename, "w", encoding="utf-8") as file:
file.write(xml_str)
print(f"XML file created successfully: {filename}")
def main():
file_path_4217 = "/usr/share/iso-codes/json/iso_4217.json"
file_path_xml = "oadr_ISO_ISO3AlphaCurrencyCode_20100407.xsd"
data4217 = parse_json_file(file_path_4217)
list4217 = data4217.get('4217')
if list4217:
for currency in list4217:
print("ID: %s, Currency: %s, Numerical: %s"%(currency.get("alpha_3"), currency.get("name"), currency.get("numeric")))
create_xml_file_minidom(file_path_xml, list4217)
if __name__ == "__main__":
main()
|