gpt4 book ai didi

python - 使用 Python 解析复杂的 XML 文件

转载 作者:太空宇宙 更新时间:2023-11-04 01:07:13 25 4
gpt4 key购买 nike

我正在尝试用 Python 解析一个非常难看的 XML 文件。我设法很好地了解它,但在 npdoc 元素上它失败了。我做错了什么?

XML:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<npexchange xmlns="http://www.example.com/npexchange/3.5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.5">
<article id="123" refType="Article">
<articleparts>
<articlepart id="1234" refType="ArticlePart">
<data>
<npdoc xmlns="http://www.example.com/npdoc/2.1" version="2.1" xml:lang="sv_SE">
<body>
<p>Lorem ipsum some random text here.</p>
<p>
<b>Yes this is HTML markup, and I would like to keep that.</b>
</p>
</body>
<headline>
<p>I am a headline</p>
</headline>
<leadin>
<p>I am some other text</p>
</leadin>
</npdoc>
</data>
</articlepart>
</articleparts>
</article>
</npexchange>

这是我目前的 python 代码:

from xml.etree.ElementTree import ElementTree

def parse(self):
tree = ElementTree(file=filename)

for item in tree.iter("article"):
articleParts = item.find("articleparts")
for articlepart in articleParts.iter("articlepart"):
data = articlepart.find("data")
npdoc = data.find("npdoc")

id = item.get("id")
headline = npdoc.find("headline").text
leadIn = npdoc.find("leadin").text
body = npdoc.find("body").text


return articles

发生的事情是我得到了 id,但是我无法访问 npdoc 元素内的字段。 npdoc 变量设置为 None。

更新:通过在 .find() 调用中使用命名空间设法将元素放入变量中。我如何获得值(value)?由于它是 HTML,因此无法正确显示 .text 属性。

最佳答案

nsmap = {'npdoc': 'http://www.example.com/npdoc/2.1'}
data = articlepart.find("npdoc:data", namespaces=nsmap)

...将找到您的 data 元素。不需要丑陋、不可靠的字符串修改。 (回复:“不可靠”——考虑这会对包含文字箭头括号的 CDATA 部分产生什么影响)。

关于python - 使用 Python 解析复杂的 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29743552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com