根据批处理文件中的键 'text' 解析 XML 文件的值
Parse XML file for value based on key 'text' from batch file
我正在尝试解析 XML(TestResult.xml 是 XML 文件的名称)文件,如下所示:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<test-run id="0" runstate="Runnable" testcasecount="94" result="Failed" total="90" passed="89" failed="1" inconclusive="0" skipped="0" asserts="220" engine-version="3.11.1.0" clr-version="4.0.30319.42000" start-time="2020-08-31 09:57:53Z" end-time="2020-08-31 10:00:06Z" duration="132.798955">
我想提取键的值 - Xml的结果、总计、通过、失败。我可以使用下面的批处理脚本来实现。
FOR /F tokens^=8^,10^,12^,14^ delims^=^" %%A in ('find "test-run" TestResult.xml') do (
echo: Result:%%A, TotalTestCases:%%B, Passed:%%C, Failed:%%D
)
我已经根据 xml 中 key/value 的位置(8^,10^,12^,14^)使用标记获得了结果。但是位置会在定期升级时发生变化。所以我想根据键文本获取相同的值。
帮我根据关键文本而不是 key/value 位置获取这些值。
我刚开始构建脚本,需要这方面的一些指导。
这个简单的方法适用于您的数据:
@echo off
setlocal EnableDelayedExpansion
for /F "delims=" %%a in ('find "test-run" TestResult.xml') do set "line=%%a"
set "line=%line:* =%"
set "var="
for %%a in (%line:~0,-1%) do (
if not defined var (
set "var=%%a"
) else (
set "!var!=%%~a"
set "var="
)
)
echo: Result:%result%, TotalTestCases:%total%, Passed:%passed%, Failed:%failed%
输出:
Result:Failed, TotalTestCases:90, Passed:89, Failed:1
我正在尝试解析 XML(TestResult.xml 是 XML 文件的名称)文件,如下所示:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<test-run id="0" runstate="Runnable" testcasecount="94" result="Failed" total="90" passed="89" failed="1" inconclusive="0" skipped="0" asserts="220" engine-version="3.11.1.0" clr-version="4.0.30319.42000" start-time="2020-08-31 09:57:53Z" end-time="2020-08-31 10:00:06Z" duration="132.798955">
我想提取键的值 - Xml的结果、总计、通过、失败。我可以使用下面的批处理脚本来实现。
FOR /F tokens^=8^,10^,12^,14^ delims^=^" %%A in ('find "test-run" TestResult.xml') do (
echo: Result:%%A, TotalTestCases:%%B, Passed:%%C, Failed:%%D
)
我已经根据 xml 中 key/value 的位置(8^,10^,12^,14^)使用标记获得了结果。但是位置会在定期升级时发生变化。所以我想根据键文本获取相同的值。
帮我根据关键文本而不是 key/value 位置获取这些值。 我刚开始构建脚本,需要这方面的一些指导。
这个简单的方法适用于您的数据:
@echo off
setlocal EnableDelayedExpansion
for /F "delims=" %%a in ('find "test-run" TestResult.xml') do set "line=%%a"
set "line=%line:* =%"
set "var="
for %%a in (%line:~0,-1%) do (
if not defined var (
set "var=%%a"
) else (
set "!var!=%%~a"
set "var="
)
)
echo: Result:%result%, TotalTestCases:%total%, Passed:%passed%, Failed:%failed%
输出:
Result:Failed, TotalTestCases:90, Passed:89, Failed:1