使用Python代码从xml文件读取标记值。

使用Python代码从xml文件读取标记值。,python,xml,Python,Xml,我需要从测试结果输出文件的xml标记中读取三个参数。xml文件类似于以下示例: -<statistics> +<total> <tag> </tag> -<suite> <stat name="SignIn" id="s1" pass="1" fail="0">SignIn</stat> </suite> </statistics> 我必须从上面的子标签“suite”中读取name、

我需要从测试结果输出文件的xml标记中读取三个参数。xml文件类似于以下示例:

-<statistics>

+<total>
<tag> </tag>
-<suite>
<stat name="SignIn" id="s1" pass="1" fail="0">SignIn</stat>
</suite>

</statistics>
我必须从上面的子标签“suite”中读取name、pass和fail的值。我需要对“N”个xml输出文件执行此操作,并将累积测试指标发送给项目的其他团队

请提供Python中的代码片段

提前感谢,,
Ishwar。

正如Aidan Kane所说,一般来说,最好使用适当的XML/HTML解析库,如lxml或Beautiful Soup,但当XML结构可预测且简单时,可以使用正则表达式(即正则表达式)来提取数据

因此,如果stat标记中的字段始终相同,且顺序与上面给出的相同,则可以这样做来提取名称、通过和失败:

#! /usr/bin/env python

s = '''-<statistics>

+<total>
<tag> </tag>
-<suite>
<stat name="SignIn" id="s1" pass="1" fail="0">SignIn</stat>
</suite>

</statistics>
'''


def main():
    import re

    print s

    pat = re.compile(r'<stat name="(.*?)" id=".*?" pass="(.*?)" fail="(.*?)">.*?</stat>')
    print pat.search(s).groups()


if __name__ == "__main__":
    main()
输出

- + - 签名 “签名”、“1”、“0”
文件就这么简单吗?文件中是否有其他标记,或者只有下面的标记?我问这个问题的原因是因为你可以很容易地用xml库来实现这一点,我总是使用lxml,但如果它真的很简单,你可以更容易地用正则表达式来实现。统计数据是测试结果文件“SignIn_Output.xml”中的一个标记。是的,Aidan,我有大约10个xml文件,所有文件都有标记“Statistics”,它给出了该文件的测试结果。。我需要读取文件名、总通过和总失败值……这并不能完全回答Aidan的问题。每个xml文件是否只有一个。。。条目?是的…整个xml文件只有一个子标记。。。在主标记统计信息下。。。