dev*_*han 6 python xml xml-serialization dicttoxml
我在 python 中使用 dicttoxml 将 dict 转换为 XML 。
我需要将 dict 转换为 XML 属性。
例如:
字典
[
{
"@name":"Ravi",
"@age":21,
"college":"Anna University"
}
]
Run Code Online (Sandbox Code Playgroud)
输出 XML
[
{
"@name":"Ravi",
"@age":21,
"college":"Anna University"
}
]
Run Code Online (Sandbox Code Playgroud)
代码
dicttoxml(dict, custom_root='Student', attr_type=False, root=True)
Run Code Online (Sandbox Code Playgroud)
实际产量
<Student name="Ravi" age=21>
<college>Anna University</college>
</Student>
Run Code Online (Sandbox Code Playgroud)
His*_*ffa 12
我有类似的要求将 XML 转换为 dict,反之亦然。我使用了一个名为xmltodict的库。该库允许您使用属性从 dict 反转到 xml。
词典
xmldata = { 'student': {
"@name":"Ravi",
"@age":21,
"college":"Anna University"
}}
Run Code Online (Sandbox Code Playgroud)
代码
import xmltodict
print(xmltodict.unparse(xmldata, pretty=True))
Run Code Online (Sandbox Code Playgroud)
尽管这个问题已经存在很长时间了,但 dicttoxml 尚未支持这一点。 https://github.com/quandyfactory/dicttoxml/issues/27
不过,如果您的需求不是那么复杂,您可以尝试这个简单的序列化器。
https://gist.github.com/reimund/5435343/
在这里找到它:-将 Python 字典序列化为 XML
小智 6
我也在使用 xmltodict,我认为 Hisham 的答案中有语法错误,但我无法发表评论,所以这里是:
import xmltodict
xmldata = {
'Student': {
'@name':'Ravi',
'@age':21,
"college":"Anna University"
}
}
print(xmltodict.unparse(xmldata,pretty=True))
Run Code Online (Sandbox Code Playgroud)
输出
<?xml version="1.0" encoding="utf-8"?>
<Student name="Ravi" age="21">
<college>Anna University</college>
</Student>
Run Code Online (Sandbox Code Playgroud)
小智 5
我可能会建议declxml(完全披露:我写的)。使用 declxml,您可以创建一个称为处理器的对象,该对象以声明方式定义 XML 的结构。您可以使用处理器来解析和序列化 XML 数据。declxml 用于与字典、对象和命名元组之间的序列化。它处理属性和元素数组并执行基本验证。
import declxml as xml
student = {
'name':'Ravi',
'age':21,
'college':'Anna University'
}
student_processor = xml.dictionary('Student', [
xml.string('.', attribute='name'),
xml.integer('.', attribute='age'),
xml.string('college')
])
xml.serialize_to_string(student_processor, student, indent=' ')
Run Code Online (Sandbox Code Playgroud)
产生所需的输出
<?xml version="1.0" ?>
<Student age="21" name="Ravi">
<college>Anna University</college>
</Student>
Run Code Online (Sandbox Code Playgroud)