2012-03-20 25 views
6

Come parte di un processo di configurazione dei cluster, sto tentando di creare un buildlabel costituito dal contenuto di un elemento xml all'interno di una struttura xml. Per questo scopo sto usando nant e xmlpeek. Il mio problema è che ho un errore strano affermando:L'uso di xmlpeek nello script Nant restituisce uno strano errore

"Nodeindex '0' è fuori portata"

Questo è solo il caso se il file XML sono xmlpeeking contiene una definizione dello spazio dei nomi in il nodo radice.

Rimuovere lo spazio dei nomi dal file xml mi dà l'output che mi aspetto.

Il target Nant che genera l'errore può essere boild fino a:

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

e il file test1.xml assomiglia a questo:

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

risposta

5

È già dato il suggerimento giusto da soli. Riguarda lo spazio dei nomi. Questo dovrebbe risolvere il problema:

<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

come potrebbe verificarsi quando si utilizza xmlpoke di seguito riportato lo stesso problema (http://stackoverflow.com/questions/2584766/nant-xmlpoke-and-unique-nodes). Stranamente non ho ricevuto hit di Google direttamente sul messaggio errato combinato con xmlpeek o nant. Grazie per la tua risposta, ora altre persone potrebbero non rimanere bloccate con quella strana errormessage – VilladsR

0

trovato un problema simile e l'anwser al mio problema qui: XmlPoke and unique nodes. Il problema era che non ho incluso la definizione dello spazio dei nomi all'interno dell'elemento xmlpeek e poi omesso il riferimento necessario per lo spazio dei nomi nella mia dichiarazione 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> 
Problemi correlati