2012-03-20 26 views
6

Là một phần của quá trình CI Tôi đang cố gắng tạo một nhãn xây dựng bao gồm nội dung của phần tử xml trong cấu trúc xml. Với mục đích này, tôi đang sử dụng nant và xmlpeek. Vấn đề của tôi là tôi nhận được một lỗi lẻ nêu:Sử dụng xmlpeek trong kịch bản Nant cho lỗi lẻ

"Nodeindex '0' là ra khỏi phạm vi"

Đây chỉ là trường hợp nếu file xml Tôi xmlpeeking chứa một định nghĩa namespace trong nút gốc.

Xóa vùng tên khỏi tệp xml cung cấp cho tôi kết quả mong đợi.

Mục tiêu Nant mà tạo ra các lỗi có thể được boild xuống:

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

và file test1.xml trông như thế này:

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

Trả lời

5

Bạn đã đưa ra bên phải gợi ý cho mình. Đó là về không gian tên. Điều này nên sửa chữa nó:

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

Như đã trình bày ở dưới cùng một vấn đề có thể xảy ra khi sử dụng xmlpoke (http://stackoverflow.com/questions/2584766/nant-xmlpoke-and-unique-nodes). Kỳ lạ là tôi đã không nhận được bất kỳ truy cập google trực tiếp trên errormessage kết hợp với không xmlpeek hoặc nant. Cảm ơn câu trả lời của bạn, bây giờ những người khác có thể không gặp khó khăn với sai lầm kỳ lạ đó – VilladsR

0

Tìm thấy một vấn đề tương tự và anwser cho vấn đề của tôi ở đây: XmlPoke and unique nodes. Vấn đề là tôi không bao gồm định nghĩa namespace bên trong phần tử xmlpeek và sau đó bỏ qua các tài liệu tham khảo cần thiết cho không gian tên trong bản Tuyên Bố xpath của tôi:

<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> 
Các vấn đề liên quan