#import minidom
from xml.dom.minidom import parse as p
#parse your XML-document
cmmn_doc = p("document.xml")
#Get all child nodes of your root-element or any element surrounding your "target" (in my example "cmmn:casePlanModel")
notelist = cmmn_doc.getElementsByTagName("cmmn:casePlanModel")[0].childNodes
#Now find the element via the id-tag
def find_element(id):
i=0
for i in range(len(notelist)):
if notelist[i].getAttribute("id") == id:
return notelist[i].nodeName #(or whatever you want to do)
#Call find_element with the id you are looking for
find_element(id)
>>> from xml.dom import minidom
>>> xml_string = '<node id="node">Node</node>'
>>> xml_doc = minidom.parseString(xml_string)
>>> elements = xml_doc.getElementsByTagName('node')
>>> for element in elements:
... if element.hasAttribute('id') and element.getAttribute('id') == 'node':
... print(element.toxml())
...
<node id="node">Node</node>
def getElementById(doc, _id):
for c in doc.childNodes:
if c.nodeType not in [c.DOCUMENT_NODE, c.TEXT_NODE, c.DOCUMENT_TYPE_NODE, c.COMMENT_NODE]:
#[ATTRIBUTE_NODE, CDATA_SECTION_NODE, ENTITY_NODE, PROCESSING_INSTRUCTION_NODE, NOTATION_NODE
if c.getAttribute('id') == _id:
return c
res_for_c = getElementById(c, _id)
if res_for_c:
return res_for_c
return None
4条答案
按热度按时间30byixjq1#
我使用另一种方法通过ID(即XML属性“id”)获取元素,因为我只想使用xml.dom.minidom.
以下是我工作中的一个例子:
示例中的XML:
我觉得这样更方便。
33qvvth12#
如果要获取name=“node”的元素
如果你想获取属性为id值为node的元素,可以使用xpath:
iklwldmw3#
从你输入的指令中,我知道你试图获取
id
值为node
的元素。解决方案是循环遍历所有XML元素(在这种情况下只有一个元素,但这并不重要),然后检查该元素是否具有名为
id
的属性,并且该属性的值为node
。让我们把这个逻辑转换成一个程序:
wgmfuz8q4#