json到xml的合成和解析约定。
jsomark的Python项目详细描述
JSON<;->;XML解析和撰写约定。在
什么是jsomark?在
jsomark是JSON到XML的转换约定。jsomark在 标准化格式并将其转换为XML。它应该把 操作并从XML文档生成JSON文档。在
使用
要从JSON文档创建XML,只需使用 json\u to\u xml函数:
fromjsomarkimportjson_to_xmljson_data=b'{"hello": "world"}'xml_data=json_to_xml(json_data)assertxml_data==b'<hello>world</hello>'
jsomark还支持更复杂的文档,如nested json 结构和Python json可序列化字典:
^{pr2}$属性
XML可以承载比JSON更多的信息(即元数据),这就是为什么 需要转换json文档格式的约定来匹配 原始XML语义。在jsomark中,属性定义为 符号“&;”:
注意
属性值只能是text或bytes
fromjsomarkimportjson_to_xmljson_data={"Device":{"Reference":{"&":{"ID":"XYZ2020","Serial":"S10987"}}}}xml_data=json_to_xml(json_data)assertxml_data==(b'<Device><Reference ID="XYZ2020" Serial="S10987"/></Device>')
如果带有属性的键也有text content,则 symbol“#”应该用来携带它:
fromjsomarkimportjson_to_xmljson_data={"Employee":{"Company":{"&":{"VAT":"900123765"},"#":"Servagro"}}}xml_data=json_to_xml(json_data)assertxml_data==(b'<Employee><Company VAT="900123765">Servagro</Company></Employee>')
注意
如果JSON键没有属性,它的值将变成文本 如前面的示例所示。在
列表
JSON文档中的列表被解释为重复元素 在生成的XML中。在
fromjsomarkimportjson_to_xmljson_data={"Order":{"Line":[{"&":{"ID":"1"},"#":"Chocolate Ice Cream"},{"&":{"ID":"2"},"#":"Banana Split"},{"&":{"ID":"3"},"#":"Caramel Cake"}]}}xml_data=json_to_xml(json_data)assertxml_data==(b'<Order><Line ID="1">Chocolate Ice Cream</Line>'b'<Line ID="2">Banana Split</Line>'b'<Line ID="3">Caramel Cake</Line></Order>')
名称空间
在jsomark中,名称空间作为单独的字典提供,其键 必须在json文档本身中使用的前缀。违约 命名空间应在命名空间字典的'None'键中设置,并且 它在json文档中的键不必加前缀:
注意
不要错过非默认命名空间键中的“:”分隔符 例如'isbn:编号在下面的示例中。在
fromjsomarkimportjson_to_xmlnamespaces={None:'urn:loc.gov:books','isbn':'urn:ISBN:0-395-36341-6'}json_data={"book":{"title":"Cheaper by the Dozen","isbn:number":1568491379}}xml_data=json_to_xml(json_data,namespaces=namespaces)assertxml_data==(b'<book xmlns="urn:loc.gov:books" xmlns:isbn="urn:ISBN:0-395-36341-6">'b'<title>Cheaper by the Dozen</title>'b'<isbn:number>1568491379</isbn:number></book>'
- 项目
标签: