繁体   English   中英

在 PYTHON 中解析不同格式的 XML 文件

[英]Parsing XML file in PYTHON with different format

我给出了一个 XML 文件,尝试使用以下代码在 Python 中读取它:

import xml.etree.ElementTree as ETree
parser = ETree.XMLParser(encoding="utf-8")
tree = ETree.parse("real.xml", parser=parser)

我收到错误消息,因此我尝试在 Notepad++ 中打开 XML,并注意到该文件并非完全采用 XML 格式:

> b'<?xml version="1.0" encoding="UTF-8" ?><root><id type="dict"><n123
> type="int">52</n123><n124 type="int">81</n124><n125
> type="int">22</n125><n126 type="int">94</n126><n127
> type="int">42</n127><n128 type="int">54</n128><n129
> type="int">94</n129><n130 type="int">34703</n130><n131
> type="int">20 ......... 
 </n141><n142 type="int">1</n142><n143
> type="int">2</n143></root>'

上面是给出的 XML 示例,我应该如何在 python 中处理它。

试试这个库。

真实文件

<?xml version="1.0" encoding="UTF-8" ?>
<root>
<id type="dict">
    <n52383 type="int">52</n52383><n80958 type="int">81</n80958><n21669 type="int">22</n21669>
</id>
<address type=''dict''>
    <n52383 type="str">292 Lennox Street</n52383><n80958 type="str">72 Jones Road</n80958> ...........
</address>
</root>

例子

from simplified_scrapy import SimplifiedDoc, utils
xml = utils.getFileContent('real.xml')
doc = SimplifiedDoc(xml)

ids = doc.select('id').children
print([(id.tag,id['type'],id.text) for id in ids])

addresses = doc.select('address').children
print([(addr.tag,addr['type'],addr.text) for addr in addresses])

结果:

[('n52383', 'int', '52'), ('n80958', 'int', '81'), ('n21669', 'int', '22')]
[('n52383', 'str', '292 Lennox Street'), ('n80958', 'str', '72 Jones Road')]

这里有更多例子: https : //github.com/yiyedata/simplified-scrapy-demo/tree/master/doc_examples

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM