【发布时间】:2013-01-22 14:42:26
【问题描述】:
请建议我为以下代码添加哪些附加代码,以便我可以解析以下 XML 代码以获取描述。
<SquishReport version="2.1">
<test name="HMI_testing">
<prolog time="2013-01-22T18:59:43+05:30"/>
<test name="tst_Setup_menu_2">
<prolog time="2013-01-22T18:59:43+05:30"/>
<verification line="7" type="" file="D:/Squish/HMI_testing/tst_Setup_menu_2/test.py" name="ECG is enabled">
<result type="PASS" time="2013-01-22T18:59:45+05:30">
<description>Comparison</description>
<description type="DETAILED">'1' and 'True' are equal</description>
<description type="DETAILED">ECG is enabled</description>
</result>
</verification>
<verification line="9" type="" file="D:/Squish/HMI_testing/tst_Setup_menu_2/test.py" name="ECG is enabled">
<result type="PASS" time="2013-01-22T18:59:45+05:30">
<description>Comparison</description>
<description type="DETAILED">'1' and 'True' are equal</description>
<description type="DETAILED">ECG is enabled</description>
</result>
</verification>
<verification line="11" type="" file="D:/Squish/HMI_testing/tst_Setup_menu_2/test.py" name="P1 is disabled">
<result type="PASS" time="2013-01-22T18:59:45+05:30">
<description>Comparison</description>
<description type="DETAILED">'0' and 'False' are equal</description>
<description type="DETAILED">P1 is disabled</description>
</result>
</verification>
<verification line="13" type="" file="D:/Squish/HMI_testing/tst_Setup_menu_2/test.py" name="P2 is disabled">
<result type="PASS" time="2013-01-22T18:59:45+05:30">
<description>Comparison</description>
<description type="DETAILED">'0' and 'False' are equal</description>
<description type="DETAILED">P2 is disabled</description>
</result>
</verification>
<verification line="15" type="" file="D:/Squish/HMI_testing/tst_Setup_menu_2/test.py" name="SPO2 is enabled">
<result type="PASS" time="2013-01-22T18:59:45+05:30">
<description>Comparison</description>
<description type="DETAILED">'1' and 'True' are equal</description>
<description type="DETAILED">SPO2 is enabled</description>
</result>
</verification>
<verification line="17" type="" file="D:/Squish/HMI_testing/tst_Setup_menu_2/test.py" name="CO2 is disabled">
<result type="PASS" time="2013-01-22T18:59:45+05:30">
<description>Comparison</description>
<description type="DETAILED">'0' and 'False' are equal</description>
<description type="DETAILED">CO2 is disabled</description>
</result>
</verification>
<verification line="19" type="" file="D:/Squish/HMI_testing/tst_Setup_menu_2/test.py" name="RESP is disabled">
<result type="PASS" time="2013-01-22T18:59:45+05:30">
<description>Comparison</description>
<description type="DETAILED">'0' and 'False' are equal</description>
<description type="DETAILED">RESP is disabled</description>
</result>
</verification>
<verification line="21" type="" file="D:/Squish/HMI_testing/tst_Setup_menu_2/test.py" name="TEMP is disabled">
<result type="PASS" time="2013-01-22T18:59:45+05:30">
<description>Comparison</description>
<description type="DETAILED">'0' and 'False' are equal</description>
<description type="DETAILED">TEMP is disabled</description>
</result>
</verification>
<epilog time="2013-01-22T18:59:45+05:30"/>
</test>
<epilog time="2013-01-22T18:59:45+05:30"/>
</test>
</SquishReport>
我需要打印的是 ECG 已启用,NIBP 已启用等。
我使用的代码添加在下面。由于某些依赖性,我需要更新相同的代码。需要在代码中提到的print处添加代码(这里需要添加代码)
import sys
import xml.dom.minidom as XY
file = open("Result_Summary.txt", "w")
tree = XY.parse('Results-On-2013-01-22_0659.xml')
#print (str(sys.argv[1]))
#tree = XY.parse(sys.argv[1])
Test_name = tree.getElementsByTagName('test')
count_testname =0
file.write(' -----------------------------------------------------------------------------------------------------\n\n')
file.write('\tTest Name \t\t No Of PASS\t\t No Of FAIL\t\t\t Description\t\t \n')
file.write(' -----------------------------------------------------------------------------------------------------\n\n')
for my_Test_name in Test_name:
count_testname = count_testname+1
my_Test_name_final = my_Test_name.getAttribute('name')
if(count_testname > 1):
#print(my_Test_name_final)
file.write(my_Test_name_final)
file.write('\t\t\t')
my_Test_status = my_Test_name.getElementsByTagName('result')
passcount = 0
failcount = 0
for my_Test_status_1 in my_Test_status:
my_Test_description = my_Test_name.getElementsByTagName('description')
for my_Test_description_1 in my_Test_description:
my_Test_description_final = my_Test_description_1.getAttribute('type')
print(Need to add the code here)
my_Test_status_final = my_Test_status_1.getAttribute('type')
if(my_Test_status_final == 'PASS'):
passcount = passcount+1
if(my_Test_status_final == 'FAIL'):
failcount = failcount+1
#print(str(my_Test_status_final))
file.write(str(passcount))
#print(passcount)
file.write('\t\t\t')
file.write(str(failcount))
前
pected result
tst_Setup_menu_2 8 0 ECG Enabled
p1 Enabled
P2 Enabled etc
【问题讨论】:
-
在从 Firefox 复制 XML 之前使用“查看源代码”;浏览器会显示带有一些额外小部件的 XML,否则当您将其粘贴到此处时,这些小部件会显示为
-符号。 -
请尝试更多地使用 ElementTree。你从来没有向我提供足够的信息来帮助你处理your previous question,我向你展示了 ElementTree 更容易用于这些任务。
-
依赖是什么?你真的应该考虑重构并可能切换到另一个解析库,因为你所拥有的完全不可读。
-
@Martijn Pieters:我使用的是 PythonWin 3.2.2,但找不到 lxml
-
@BrijeshKrishnan:ElementTree 是 Python 的一部分,它以
xml.etree.ElementTree与 Python 3.2 捆绑在一起。lxml包使用相同的 API,但不是您的任务所必需的,我会说。
标签: python xml xml-parsing