Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中搜索XML元素?_Python_Soap - Fatal编程技术网

如何在python中搜索XML元素?

如何在python中搜索XML元素?,python,soap,Python,Soap,下面显示的Сode工作正常,但问题是我需要手动设置名称空间,如d:。是否可以以某种方式搜索忽略此名称空间的元素,如dom.getElementsByTagName('Scopes') 由于您的代码使用parseString和getElementsByTagName,因此我假设您使用的是minidom。在这种情况下,请尝试: dom.getElementsByTagNameNS('*', 'Scopes') 在中没有这样说,但是如果您查看xml/dom/minidom.py的源代码,您将看到g

下面显示的Сode工作正常,但问题是我需要手动设置名称空间,如
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/>