我是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块。谢谢大家。
答案 0 :(得分:0)
对于您进行的特定通话,您需要添加此语法才能到达标记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')