我需要处理一些长这样的XML:
<ns2:foobarResponse xmlns:ns2="http://api.example.com">
<duration>206</duration>
<artist>
<tracks>...</tracks>
</artist>
</ns2:foobarResponse>
我发现了lxml和它的objectify模块,它可以让你像使用字典一样以Python方式遍历XML文档。
问题是:每次尝试访问元素时,它都会使用虚假的XML命名空间。就像这样:
from lxml import objectify
tree = objectify.fromstring(xml)
print tree.artist
# ERROR: no such child: {http://api.example.com}artist
它试图使用父命名空间访问<artist>
,但该标记未使用命名空间。
有任何想法如何解决这个问题吗?谢谢。
</ns2:foobarResponse>
上抛出XMLSyntaxError错误,因为ns2
未定义。你最好找另一个XML解析器,它返回每个节点的“localname”,例如:foobarResponse
。 - milahu