【问题标题】:Using xmlpeek in Nant script gives odd error在 Nant 脚本中使用 xmlpeek 会出现奇怪的错误
【发布时间】:2012-03-22 05:55:15
【问题描述】:

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

“节点索引‘0’超出范围”

仅当我正在 xmlpeeking 的 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>

test1.xml 文件如下所示:

<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <ProductVersion>9.0.21022</ProductVersion>
    </PropertyGroup>
</Project>

【问题讨论】:

    标签: nant


    【解决方案1】:

    您自己已经给出了正确的提示。这是关于命名空间的。这应该可以解决它:

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

    【讨论】:

    • 如下所述,使用 xmlpoke (stackoverflow.com/questions/2584766/…) 时可能会出现同样的问题。奇怪的是,我没有直接在错误消息上得到任何谷歌点击,既没有 xmlpeek 也没有 nant。感谢您的回答,现在其他人可能不会被那个奇怪的错误消息卡住
    【解决方案2】:

    在这里找到了一个类似的问题和我的问题的答案:XmlPoke and unique nodes。问题是我没有在 xmlpeek 元素中包含命名空间定义,然后在我的 xpath 语句中省略了对命名空间的必要引用:

    <xmlpeek file="C:\xxx\test1.xml" xpath="//x:Project/x:PropertyGroup/x:ProductVersion" property="element">
        <namespaces>
            <namespace prefix="x" uri="http://schemas.microsoft.com/developer/msbuild/2003" />
        </namespaces>
    </xmlpeek>
    

    【讨论】:

      猜你喜欢
      • 2015-05-05
      • 1970-01-01
      • 1970-01-01
      • 2021-02-22
      • 2013-11-21
      • 2020-08-30
      • 2013-05-05
      • 2012-10-05
      • 2013-03-15
      相关资源
      最近更新 更多