python – ElementTree find() findall()找不到带命名空间的标签?

python – ElementTree find() findall()找不到带命名空间的标签?,第1张

概述如果我指定命名空间,使用以下代码我希望能够搜索目标标记. import xml.etree.ElementTree as ETxml = """<?xml version="1.0" encoding="UTF-8"?> <xyz2:outer xmlns:xyz1="http://www.company.com/url/common/v1" 如果我指定命名空间,使用以下代码我希望能够搜索目标标记.
import xml.etree.ElementTree as ETxml = """<?xml version="1.0" enCoding="UTF-8"?>         <xyz2:outer xmlns:xyz1="http://www.company.com/url/common/v1"                     xmlns:xyz2="http://www.company.com/app/v2"                     version="9.0"                     something="false">             <xyz2:inner>                 <xyz2:target>                     <xyz1:IDType>name</xyz1:IDType>                     <xyz1:ID>A name Here</xyz1:ID>                 </xyz2:target>             </xyz2:inner>         </xyz2:outer>"""tree = ET.fromstring(xml)print tree[0][0]# <Element '{http://www.company.com/app/v2}target' at 0x7f3c294374d0>tree.find('{http://www.company.com/app/v2}target')# None

无论我做什么,我都无法找到目标标签

我已经尝试了各种ElementTree实现,包括lxml,据称可以接受{*}命名空间.没有骰子?

解决方法 target不是根元素;你应该在前面.//.
>>> import xml.etree.ElementTree as ET>>> tree = ET.fromstring(xml)>>> tree.findall('.//{http://www.company.com/app/v2}target')[<Element '{http://www.company.com/app/v2}target' at 0x2d143c8>]
总结

以上是内存溢出为你收集整理的python – ElementTree find()/ findall()找不到带命名空间的标签?全部内容,希望文章能够帮你解决python – ElementTree find()/ findall()找不到带命名空间的标签?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1207045.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存