使用 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')
我是 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')