带有元素树的Python XML:在子节点上解析满足多个条件的节点

时间:2018-07-12 02:02:28

标签: xml python-3.x elementtree

嗨,我是Python和XML的新手(我知道这是很好的组合),我感谢您的帮助。我有一个基本上像这样的xml文档:

<root>
   <elementaryExchange elementaryExchangeId='alkjalj' amount='5'>
      <compartment subcompartmentId='52u0298452'>x</compartment>
      <inputGroup>'4'</inputGroup>
   </elementaryExchange>
</root>

除了这些elementaryExchange节点很多(我只关心inputGroup ='4'的那些节点)。我正在尝试列出几个列表,其中每个元素对应于相同的基本交换。到目前为止,我的代码:

    for j, LX in enumerate(root.findall(".//elementaryExchange/[inputGroup='4']")):
        o.append(LX.attrib['elementaryExchangeId'])
        p.append(float(LX.attrib['amount']))
        for c in root.find(".//elementaryExchange[@elementaryExchangeId==o[j]].../compartment"):       
            r.append(c.attrib['subcompartmentId'])

o和p似乎工作正常,但我似乎无法弄清楚小班室ID部分。感谢您的提示!

1 个答案:

答案 0 :(得分:0)

在上面的代码中,我想要的列表分别是o,p和r,分别用于基本交换ID,金额和子隔间ID。我想我已经知道了-我只是不明白如何使用xpath:

for LX in root.findall(".//elementaryExchange/[inputGroup='4']"):
    o.append(LX.attrib['elementaryExchangeId'])
    p.append(float(LX.attrib['amount']))    
for LXc in root.findall(".//elementaryExchange/[inputGroup='4']/compartment"):       
    r.append(LXc.attrib['subcompartmentId'])