2016-06-15 19 views
0

das folgende XML Gegeben:aktualisieren XML-Element

<data> 
    <variable> 
    <row> 
     <column1>RPS</column> 
     <column2>10</column> 
    </row> 
    </variable> 

    <variable> 
    <row> 
     <column1>SANTH</column> 
     <column2>5000</column> 
    </row> 
    </variable> 
</data> 

Ich brauche den Wert 5000 lesen und mit einiger Zufallszahl ersetzen muß. Ich habe keine Ahnung. Unten Code aus dem Netz kopiert. Es funktioniert nicht gemäß meiner Anforderung.

Lassen Sie mich wissen, wie Sie auf die Spalte2 zugreifen, indem Sie den Elementnamen angeben, um den Indexwert anzugeben.

+0

würden Sie in Erwägung ziehen, einige einfache Codestück schreiben, um dieses Problem zu lösen? –

+0

ja. Ich benutze das als Beispiel. – Santhosh

Antwort

0

Ihre XML-Daten enthalten mehr als einen Knoten <variable>, sodass $xml.data.variable eine Liste der Knoten erstellt. PowerShell v2 listet Listen/Arrays nicht transparent auf, um den Zugriff auf die Elemente jedes Elements zu ermöglichen. Stattdessen versuchen Sie, auf eine (nicht vorhandene) Eigenschaft row des Arrays von <variable> Knoten zuzugreifen.

Dies sollte funktionieren, wenn Sie die <column2> Kindknoten des zweiten <variable> Knoten ändern möchten:

$xml.data.variable[1].row.column2 = "$variable" 

Wenn Sie den untergeordneten Knoten, dessen Wert 5000 (unabhängig von seiner Position) ändern möchten sind Sie Wahrscheinlich besser dran mit einem XPath Ausdruck:

$xml.SelectSingleNode("//column2[text()='5000']").'#text' = "$variable" 
+0

Vielen Dank. Its woked :) 96 1.2.3.% 2a. Kennst du die Bedeutung von jedem? und hier% 2a bedeutet was? – Santhosh

+0

Woher soll ich das wissen? Das XML-Snippet unterscheidet sich von dem, was Sie in Ihrer Frage gepostet haben, und ich habe keine Ahnung, was Sie einfügen oder woher dieser Wert kommt. –

+0

Entschuldigung .. !! Könntest du bitte sagen, warum das passiert, wenn man nicht getroffen wird? ApplicationRevision hier 96 und ApplicationVersion = 1.2.3.% 2a – Santhosh