【问题标题】:Reading tag values from xml file using Python code.使用 Python 代码从 xml 文件中读取标签值。
【发布时间】:2014-12-10 10:21:41
【问题描述】:

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

-<statistics>

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

</statistics>

我必须从上面的子标签“套件”中读取名称、通过和失败的值。 (我需要对 'N' 个 xml 输出文件执行此操作,并将累积的测试指标发送给项目的其他团队)

请提供 Python 中的代码 sn-p。

提前致谢, 伊什瓦尔。

【问题讨论】:

  • 文件就这么简单吗?文件中是否还有其他&lt;stat&gt; 标记,或者只是&lt;suite&gt; 下的标记?我问的原因是因为您可以使用 xml 库轻松做到这一点(我总是使用 lxml),但如果它真的简单,您可以使用正则表达式更轻松地做到这一点。
  • 统计数据是来自测试结果文件'SignIn_Output.xml'的标签之一。
  • 是的 Aidan,我有大约 10 个 xml 文件,所有文件都带有标签“统计”,它给出了该文件的测试结果。我需要读取文件名、总通过和总失败值。
  • 这并不能完全回答艾丹的问题。每个 xml 文件是否只有一个 &lt;stat ...&gt;...&lt;/stat&gt; 条目?
  • 是...整个xml文件只有一个子标签...在主标签Statistics...

标签: python xml


【解决方案1】:

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

因此,如果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()

输出

-<statistics>

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

</statistics>

('SignIn', '1', '0')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-09
    • 1970-01-01
    相关资源
    最近更新 更多