我有一个XML文件。我想要的是使用批处理文件从此XML文件中读取特定标记值,并将此值与其他值进行比较。
我的XML文件是:
<cruisecontrol project="AAA">
<sourcemonitor_metrics>
<project version="3.3">
<metric_names name_count="15">
<metric_name id="M0" type="number">Lines</metric_name>
<metric_name id="M1" type="number">Statements</metric_name>
.
.
.
<metric_name id="M13" type="average" values="block_depths">Average Block Depth</metric_name>
<metric_name id="M14" type="average">Average Complexity</metric_name>
</metric_names>
<checkpoints checkpoint_count="1">
<checkpoint checkpoint_name="NewcheckPoint" ignore_blank_lines="false">
<metrics metric_count="15">
<metric id="M0">34126</metric>
<metric id="M1">15278</metric>
.
.
.
<metric id="M13">2.48</metric>
<metric id="M14">3.34</metric> <!-- Want to read this value in batch -->
</metrics>
##请忽略结束标记。
我想阅读<metric id="M14">
值
我是批处理脚本的新手。
请建议我怎么做?
答案 0 :(得分:1)
首先,阅读HELP FINDSTR
并尝试这个简单的命令
findstr /r /c:"\<metric id=\"M14\"\>[0-9,.]*</metric\>" my.xml
它在xml文件中找到正则表达式"\<metric id=\"M14\"\>[0-9,.]*</metric\>"
并返回匹配的行。
然后阅读HELP FOR
并尝试此命令
for /f "delims=^<^> tokens=3" %a in ('findstr /r /c:"\<metric id=\"M14\"\>[0-9,.]*</metric\>" my.xml') do @echo %a
它使用<
和>
作为分隔符从上一个命令解析返回的行,并返回第三个参数,即所需的值。