soap - How to search for XML elements in python? -


Сode shown below works perfectly, problem need manually set name-spaces d:. possible somehow search elements ignoring name-spaces dom.getelementsbytagname('scopes')?

def parsesoapbody(soap_data):     dom = parsestring(soap_data)      return {         'scopes': dom.getelementsbytagname('d:scopes')[0].firstchild.nodevalue,         'address': dom.getelementsbytagname('d:xaddrs')[0].firstchild.nodevalue,     } 

since code uses parsestring , getelementsbytagname, i'm assuming using minidom. in case, try:

dom.getelementsbytagnamens('*', 'scopes') 

it doesn't in the docs, if in source code xml/dom/minidom.py, you'll see getelementsbytagnamens calls _get_elements_by_tagname_ns_helper defined this:

def _get_elements_by_tagname_ns_helper(parent, nsuri, localname, rc):     node in parent.childnodes:         if node.nodetype == node.element_node:             if ((localname == "*" or node.localname == localname) ,                 (nsuri == "*" or node.namespaceuri == nsuri)):                 rc.append(node)             _get_elements_by_tagname_ns_helper(node, nsuri, localname, rc)     return rc 

notice when nsuri equals *, localname needs match.


for example,

import xml.dom.minidom minidom content = '''<root xmlns:f="foo"><f:test/><f:test/></root>''' dom = minidom.parsestring(content) n in dom.getelementsbytagnamens('*', 'test'):     print(n.toxml())     # <f:test/>     # <f:test/> 

Comments

Popular posts from this blog

windows - Single EXE to Install Python Standalone Executable for Easy Distribution -

c# - Access objects in UserControl from MainWindow in WPF -

javascript - How to name a jQuery function to make a browser's back button work? -