2010-10-14 4 views
12

I ont défini une chaîne XML à l'aidechaîne XML de chargement avec PowerShell

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

Maintenant, je veux le charger dans une variable pour pouvoir le manipuler est des nœuds, etc. [xml] La ligne ci-dessous les résultats dans un erreur ...

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

Comment faire?

+4

Je ne vois aucune erreur de cette ligne. Avez-vous déjà fortement typé la variable $ str ou quelque chose? Essayez de mettre le type avant la variable à (re) typer la variable: [xml] $ str = "" (ou [xml] $ str = [xml] "") – Jaykul

+0

même ici. Cela fonctionne pour moi comme vous l'avez dactylographié ci-dessus. –

+1

Était ancienne version PowerShell. – rickythefox

Répondre

20

J'ai trouvé cet article pour être assez bon: http://www.pluralsight-training.net/community/blogs/dan/archive/2006/11/25/42506.aspx

Et celui-ci: http://powershell.com/cs/blogs/ebook/archive/2009/03/30/chapter-14-xml.aspx

Pour en XML doit être traité dans PowerShell


Votre question semble fonctionner pour moi . Que diriez-vous de poster l'erreur afin que nous puissions voir ce qui se passe? Je viens d'ajouter test à l'intérieur de ma chaîne pour montrer que je peux accéder à la valeur, mais cela devrait fonctionner sans cela.

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


AUTRE EDIT:

une chaîne de coulée a travaillé aussi pour moi, alors que diriez-vous nous montrer un peu de travail puisque je ne peux pas reproduire votre problème Again, I added test to show that I can access XML members Full Image


... et je l'ai couru avec votre chaîne et il a bien fonctionné ... ...notice there was an empty return? Full Image

+0

Il s'agit de charger du XML à partir d'un fichier. Je veux le charger à partir d'une chaîne. – rickythefox

+0

Que diriez-vous de poster l'erreur que vous obtenez alors, parce que j'étais capable de charger la chaîne dans ma powershell très bien. Aussi, prenez-le facile sur les bouchons, les références à l'intérieur de ces articles s'appliquent encore (voir à quel point les bouchons sont agaçants).Je vais mettre à jour ma question pour vous – Urda

+0

Réponse mise à jour, je ne vois pas ce que vous êtes en train de casser. – Urda

3

Essayez cette

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

Pour le bénéfice des chercheurs, si vous avez une ligne supérieure de xml inclut le formatage (plutôt que d'entrer directement dans le nœud racine) les informations dont vous avez besoin pour supprimer la ligne supérieure avant de pouvoir la lancer

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

Nécessite:

$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 
Questions connexes