2010-10-14 6 views
12

Ich habe eine XML-Zeichenfolge definiertLaden von XML-String mit Powershell

$str = "<a><b></b></a>" 

Jetzt mit ich es in ein [xml] Variable laden möge manipulieren zu können, ist es Knoten usw. Die Zeile unterhalb Ergebnisse in einem Fehler ...

$str = [xml]"<a><b></b></a>" 

Wie mache ich das?

+4

ich keine Fehler aus dieser Linie zu sehen. Haben Sie zuvor die $ str-Variable oder etwas stark eingegeben? Versuchen Sie, die Art vor der Variablen setzen (wieder) zu stark die Variable eingeben: [xml] $ str = "" (oder [xml] $ str = [xml] "") – Jaykul

+0

Hier gilt das gleiche. Es funktioniert für mich, wie Sie es oben eingegeben haben. –

+1

War alte Powershell-Version. – rickythefox

Antwort

20

ich diesen Artikel gefunden werden ziemlich gut: http://www.pluralsight-training.net/community/blogs/dan/archive/2006/11/25/42506.aspx

Und dieses: http://powershell.com/cs/blogs/ebook/archive/2009/03/30/chapter-14-xml.aspx

Denn als XML in Powershell behandelt werden muss


Ihre Frage für mich zu arbeiten scheint . Wie wäre es, wenn Sie den Fehler posten, damit wir sehen können, was vor sich geht? Ich habe gerade test innerhalb meiner Zeichenfolge hinzugefügt, um zu zeigen, dass ich auf den Wert zugreifen kann, aber es sollte auch ohne es funktionieren.

Yes I added test, but you can see my example worked Full Image


ANOTHER EDIT:

Casting ein String auch für mich gearbeitet, so wie über Sie uns einige Arbeit zeigen, da ich das Problem nicht reproduzieren können Again, I added test to show that I can access XML members Full Image


... und ich lief es mit der Zeichenfolge und es funktionierte gut ... ...notice there was an empty return? Full Image

+0

Es geht darum, XML aus einer Datei zu laden. Ich möchte es von einem STRING laden. – rickythefox

+0

Wie wäre es, wenn Sie den Fehler posten, den Sie bekommen, weil ich in der Lage war, die Zeichenfolge in meiner Powershell ganz gut zu laden. Auch nehmen Sie es leicht auf die Kappen, die Hinweise in diesen Artikeln noch gelten (sehen Sie, wie ärgerlich die Kappen sind).Ich werde meine Frage für Sie aktualisieren – Urda

+0

Antwort aktualisiert, ich sehe nicht, was Sie brechen. – Urda

3

Versuchen Sie, diese

$xmlcontent = variable which holds xml data in string 
$xml = New-Object -TypeName System.Xml.XmlDocument 
$xml.LoadXml($xmlcontent) 
0

Zum Wohle der Suchenden, wenn Sie eine der obersten Zeile des XML haben, dass enthält die Formatierung (und nicht gerade in am Wurzelknoten) info Sie die oberste Zeile entfernen müssen, bevor Sie es

zB werfen können

<?xml version="1.0" encoding="utf-8"?> 
<Courses> 
    <CourseEntry Type="Mandatory" Name="Math"/> 
    <CourseEntry Type="Mandatory" Name="Coding" /> 
    <CourseEntry Type="Optional" Name="Economics" /> 
    <CourseEntry Type="Optional" Name="History" /> 
</Courses> 

Benötigt:

$xmlFile = Get-Content "*.xml" 
$xmlFileMinusFormatData = $xmlFile[1..($xmlFile.Length - 1)] #we need to remove the first line 
$usableXml = [xml]$xmlFileMinusFormatData # Convert to xml for easy handling 
$usableXml.Courses.CourseEntry.Count # just a count of rows 
Verwandte Themen