从批处理文件中读取xml并比较该值

时间:2013-01-28 06:53:37

标签: batch-file xml-parsing

我有一个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">值 我是批处理脚本的新手。 请建议我怎么做?

1 个答案:

答案 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

它使用<>作为分隔符从上一个命令解析返回的行,并返回第三个参数,即所需的值。