2010-10-14 14 views
12

he definido una cadena XML utilizandoCargando cadena XML con PowerShell

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

Ahora quiero cargarlo en una variable [xml] para poder manipular es nodos etc. La fila debajo de los resultados en una error ...

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

¿Cómo puedo hacer esto?

+4

no aparece ningún error de esa línea. ¿Has escrito fuertemente la variable $ str o algo así? Trate de poner el tipo antes de la variable a (re) escribir fuertemente la variable: [xml] $ cadena = "" (o [XML] $ cadena = [xml] "") – Jaykul

+0

Lo mismo digo. Me funciona como lo has escrito arriba. –

+1

Era la versión vieja de powershell. – rickythefox

Respuesta

20

He encontrado este artículo a ser bastante bueno: http://www.pluralsight-training.net/community/blogs/dan/archive/2006/11/25/42506.aspx

Y éste: http://powershell.com/cs/blogs/ebook/archive/2009/03/30/chapter-14-xml.aspx

Para cuando XML necesita ser manejado en PowerShell


Su pregunta parece funcionar para mí . ¿Qué hay de publicar el error para que podamos ver lo que está pasando? Acabo de agregar test dentro de mi cadena para mostrar que puedo acceder al valor, pero debería funcionar sin él también.

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


otra edición:

casting una cadena también trabajó para mí, así que ¿qué nos muestras un poco de trabajo ya que no puedo reproducir el problema Again, I added test to show that I can access XML members Full Image


... y me encontré con su cadena y funcionó bien ... ...notice there was an empty return? Full Image

+0

Se trata de cargar XML desde un ARCHIVO. Quiero cargarlo desde STRING. – rickythefox

+0

¿Qué tal si publicas el error que obtuviste entonces, porque pude cargar la cuerda en mi PowerShell sin problemas? También tómalo con calma en las mayúsculas, las referencias dentro de esos artículos TODAVÍA SE APLICAN (mira qué molestas son las mayúsculas).Actualizaré mi pregunta por usted – Urda

+0

Respuesta actualizada, no veo lo que está rompiendo. – Urda

3

Prueba este

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

Para el beneficio de los buscadores, si tiene una línea superior de XML que incluye información de formato (en lugar de directamente en el nodo raíz) que necesita para eliminar la línea superior antes de poder convertirlo

por ej.

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

Requiere:

$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