vbs notas lenguaje crear con como bloc archivo vbscript xmldom

vbscript - lenguaje - como crear un archivo.vbs con bloc de notas



VBScript y loadXML: no válido en el nivel superior del documento. ¿Como arreglarlo? (2)

Tres observaciones adicionales:

(1) Como .parseError.reason tiende a ser críptico, vale la pena incluir su propiedad .srcTxt (y el parámetro a .loadXml):

Dim xmlurl : xmlurl = "song.xml" Dim xmlDoc : Set xmlDoc = CreateObject("Microsoft.XMLDOM") xmlDoc.async = False xmlDoc.loadXML xmlurl If 0 <> xmlDoc.parseError.errorcode Then WScript.Echo xmlDoc.parseError.reason, "Src:", xmlDoc.parseError.srcText Else WScript.Echo "surprise, surprise" End if

salida:

Invalid at the top level of the document. Src: song.xml

Por supuesto, escribir una Función / Sub que tome en cuenta todas las propiedades de .parseError y usar eso siempre, sería aún mejor.

(2) Para cargar un archivo o URL, use .load:

Dim xmlDoc : Set xmlDoc = CreateObject("Microsoft.XMLDOM") Dim xmlurl For Each xmlurl In Array("song.xml", "http://gent/~eh/song.xml", "zilch") xmlDoc.async = False if xmlDoc.load(xmlurl) Then With xmlDoc.documentElement.firstChild WScript.Echo xmlurl _ , .tagName _ , .firstChild.tagName _ , .firstChild.text End With Else WScript.Echo xmlurl, xmlDoc.parseError.reason, "Src:", xmlDoc.parseError.srcText End if Next

salida:

song.xml nowplaying-info property CKOI-ÄÖÜ http://gent/~eh/song.xml nowplaying-info property CKOI-ÄÖÜ zilch The system cannot locate the object specified. Src:

(3) Usar el DOM evita todos los problemas de codificación (es por eso que coloqué algunos diéresis alemanes en ''su'' archivo, que incluso llegó a la salida de DOS-Box) y hace que RegExps (incluso el de Perl) sea una segunda mejor opción.

Esta es mi publicación de fort en stackoverflow. He buscado muchas preguntas y respuestas similares en este sitio, pero mis condiciones parecen un poco diferentes. aquí está mi código vbscript:

------------ fragmento de código ---------------

xmlurl = "songs.xml" set xmlDoc = CreateObject("Microsoft.XMLDOM") xmlDoc.async = False xmlDoc.loadXML(xmlurl) if xmlDoc.parseError.errorcode<>0 then ''error handling code msgbox("error! " & xmlDoc.parseError.reason) end if

------------ fragmento de código final ---------------

XML:

<?xml version="1.0" encoding="UTF-8"?> <nowplaying-info-list> <nowplaying-info mountName="CKOIFMAAC" timestamp="1339771946" type="track"> <property name="track_artist_name"><![CDATA[CKOI]]></property> <property name="cue_title"><![CDATA[HITMIX]]></property> </nowplaying-info> <nowplaying-info mountName="CKOIFMAAC" timestamp="1339771364" type="track"> <property name="track_artist_name"><![CDATA[AMYLIE]]></property> <property name="cue_title"><![CDATA[LES FILLES]]></property> </nowplaying-info> <nowplaying-info mountName="CKOIFMAAC" timestamp="1339771149" type="track"> <property name="track_artist_name"><![CDATA[MIA MARTINA]]></property> <property name="cue_title"><![CDATA[TOI ET MOI]]></property> </nowplaying-info> </nowplaying-info-list>

También traté de eliminar la primera línea en caso de que tal vez UTF-8 no fuera compatible con Windows (vi algunas publicaciones sobre esto), pero aún tengo el mismo error. También probé Unix2dos y viceversa en caso de que hubiera problemas de devolución de carro (caracteres ocultos incrustados en el xml). Simplemente no puedo entender lo que está mal. Es un archivo XML simole. Podría analizarlo en unos minutos usando Perl Regex, pero necesito ejecutar este script en Windows para usar vbscript. Utilizo la misma técnica para analizar XML de otras fuentes sin ningún problema. No puedo modificar el XML por desgracia, es de una fuente externa. Tengo exactamente el mismo error tanto en mi edición de inicio de Windows Vista como en Windows Server 2008. Estoy ejecutando el vbscript desde la línea de comandos para probar hasta ahora (es decir, no en ASP).

Gracias por adelantado,

Sam


xmlDoc.loadXML() puede cargar una cadena XML. No puede recuperar una URL.

Use un objeto XMLHTTPRequest si necesita realizar una solicitud HTTP.

Function LoadXml(xmlurl) Dim xmlhttp Set xmlhttp = CreateObject("MSXML2.XMLHTTP") xmlhttp.Open "GET", xmlurl, false '' switch to manual error handling On Error Resume Next xmlhttp.Send If err.number <> 0 Then WScript.Echo xmlhttp.parseError.Reason Err.Clear End If '' switch back to automatic error handling On Error Goto 0 Set LoadXml = xmlhttp.ResponseXml End Function

Usa como

Set doc = LoadXml("http://your.url/here")