在Nant脚本中使用xmlpeek会产生奇怪的错误

Vil*_*dsR 6 nant

作为CI过程的一部分,我正在尝试创建一个构建标记,它由xml结构中的xml元素的内容组成.为此我使用nant和xmlpeek.我的问题是我得到一个奇怪的错误说明:

"Nodeindex'0'超出范围"

仅当xml文件的xml文件在根节点中包含命名空间定义时才会出现这种情况.

从xml文件中删除命名空间可以获得我期望的输出.

生成错误的nant目标可以归结为:

    <target name="TDSLabel">
            <property name="element" value=""/>
            <echo message="Getting element" />
            <xmlpeek file="C:\xxx\test1.xml" xpath="//Project/PropertyGroup/ProductVersion" property="element"/>
            <echo message="The found element value was: ${element}" />
    </target>
Run Code Online (Sandbox Code Playgroud)

并且test1.xml文件如下所示:

<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <ProductVersion>9.0.21022</ProductVersion>
    </PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

The*_*man 5

你已经给出了正确的提示.它是关于命名空间的.这应该解决它:

<target name="TDSLabel">
  <property name="element" value=""/>
  <echo message="Getting element" />
  <xmlpeek
    file="C:\xxx\test1.xml"
    xpath="//x:Project/x:PropertyGroup/x:ProductVersion"
    property="element"
    verbose="true">
    <namespaces>
      <namespace prefix="x" uri="http://schemas.microsoft.com/developer/msbuild/2003" />
    </namespaces>
  </xmlpeek>
  <echo message="The found element value was: ${element}" />
</target>
Run Code Online (Sandbox Code Playgroud)