使用 python、elementtree、xml 解析器获取因某种原因不起作用的属性?

Using python, elementtree, xml parser to get attributes not working for some reason?

我是 python 和解析 xml 的新手,但我遇到了一个特定的 xml 文件的问题,该文件是由我使用的程序吐出的。我正在尝试使用 python 和 elementtree 解析此 xml 文件以提取 url 数据(下面的 URL 是假的)。关于为什么这不起作用的任何想法?

我的python代码:

def xmlTreeParser(fileName,attribute,tagName):
tree = ET.parse(fileName)
root = tree.getroot()

attribArray = [element.attrib[attribute] for element in root.findall(tagName)]
print attribArray

xmlTreeParser("xml_file.xml",'text','Expr')

这是我的 xml 文件:

<Query id="f9cef041-085d-47e0-8d16-15e36bba1ec8" name="">
  <Description />
  <JustSortedColumns />
  <Conditions linking="All">
    <Condition class="PDCT" enabled="True" readOnly="False" linking="Any">
      <Condition class="SMPL" enabled="True" readOnly="False">
        <Operator id="Contains" />
        <Expressions>
          <Expr class="ENTATTR" id="Person.LinkedInUrl" />
          <Expr class="CONST" type="String" kind="Scalar" value="https://www.linkedin.com/Bill-Smith" text="https://www.linkedin.com/Bill-Smith" />
        </Expressions>
      </Condition>
    </Condition>
  </Conditions>
</Query>

我写的 python 在我自己写的另一个测试 xml 文件上工作得很好。我不知道为什么我不能解析这个特定的 xml 块。谢谢大家。

对于您进行的特定调用,您需要添加此语法以到达标记 Expr (doc):

xmlTreeParser("xml_file.xml",'text','.//Expr')

而且你的 Xml 没有像文本这样的所有属性,你应该防止这样的错误:

attribArray = [element.attrib.get(attribute, '') for element in root.findall(tagName)]
# -----------------------------^
print(attribArray)

xmlTreeParser("xml_file.xml",'text','.//Expr')