【问题标题】:MSBuild XmlPeek task help required需要 MSBuild XmlPeek 任务帮助
【发布时间】:2015-10-30 14:14:39
【问题描述】:

我的 sample.xml 文件在下面

<deployment>
     <definition type="xpath">
      <xpath>configuration/Settings/add[@key='NetworkPath'][@value]</xpath>
  <attribute>value</attribute>
  <value>http://www.google.com</value>
 </definition>
</deployment>

我想获取对应于 xpath“configuration/Settings/add[@key='NetworkPath'][@value]”的值“http://www.google.com”。我在 XmlPeek 任务下面写,但它不工作

 <XmlPeek XmlInputPath="C:\Sample.xml"
         Query="configuration/Settings/add[@key='NetworkPath'][@value]">
  <Output TaskParameter="Result" ItemName="Peeked" />
</XmlPeek>
<Message Text="Peeked value is @(Peeked)"/>

【问题讨论】:

    标签: msbuild readxml


    【解决方案1】:

    XPath 可能有些混乱。

    如果您想从 Sample.xml 中检索 http://www.google.com,您需要应用此查询:

    <XmlPeek XmlInputPath="Sample.xml"
             Query="/deployment/definition/value/text()">
      <Output TaskParameter="Result" ItemName="Peeked" />
    </XmlPeek>
    

    如果要提取路径configuration/Settings/add[@key='NetworkPath'][@value]/@value,它对应于另一个具有这种形式的Xml文件:

    <configuration>
        <Settings>
            <add key="NetworkPath" value="http://www.google.com"/> 
        </Settings>
    </configuration>
    

    查看一些XPath examples

    【讨论】:

    • 谢谢法比安。我明白你的意思了。
    • 谢谢法比安。我明白你的意思。我想要的方式是由第三方工具“Final Builder”正确获取。所以,我认为必须有一种方法可以对 msbuild 做同样的事情。让我们看看其他人是否有答案或有办法做到这一点
    • 您可以使用 msbuild 来完成,但您需要更改 XmlInputPath 并使用真正的 xml 文件而不是“Sample.xml”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-08
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多