如何在python中搜索XML元素?
下面显示的Сode工作正常,但问题是我需要手动设置名称空间,如如何在python中搜索XML元素?,python,soap,Python,Soap,下面显示的Сode工作正常,但问题是我需要手动设置名称空间,如d:。是否可以以某种方式搜索忽略此名称空间的元素,如dom.getElementsByTagName('Scopes') 由于您的代码使用parseString和getElementsByTagName,因此我假设您使用的是minidom。在这种情况下,请尝试: dom.getElementsByTagNameNS('*', 'Scopes') 在中没有这样说,但是如果您查看xml/dom/minidom.py的源代码,您将看到g
d:
。是否可以以某种方式搜索忽略此名称空间的元素,如dom.getElementsByTagName('Scopes')
由于您的代码使用parseString和
getElementsByTagName
,因此我假设您使用的是minidom。在这种情况下,请尝试:
dom.getElementsByTagNameNS('*', 'Scopes')
在中没有这样说,但是如果您查看
xml/dom/minidom.py
的源代码,您将看到getelementsbytagnames
调用\u通过标记名\u ns\u helper获取元素,其定义如下:
def _get_elements_by_tagName_ns_helper(parent, nsURI, localName, rc):
for node in parent.childNodes:
if node.nodeType == Node.ELEMENT_NODE:
if ((localName == "*" or node.localName == localName) and
(nsURI == "*" or node.namespaceURI == nsURI)):
rc.append(node)
_get_elements_by_tagName_ns_helper(node, nsURI, localName, rc)
return rc
请注意,当nsURI
等于*
时,只有localName
需要匹配
比如说,
import xml.dom.minidom as minidom
content = '''<root xmlns:f="foo"><f:test/><f:test/></root>'''
dom = minidom.parseString(content)
for n in dom.getElementsByTagNameNS('*', 'test'):
print(n.toxml())
# <f:test/>
# <f:test/>
将xml.dom.minidom导入为minidom
内容=“”“
dom=minidom.parseString(内容)
对于dom.getElementsByTagnames(“*”,“test”)中的n:
打印(n.toxml())
#
#
import xml.dom.minidom as minidom
content = '''<root xmlns:f="foo"><f:test/><f:test/></root>'''
dom = minidom.parseString(content)
for n in dom.getElementsByTagNameNS('*', 'test'):
print(n.toxml())
# <f:test/>
# <f:test/>