VBScript und loadXML: Ungültig auf der obersten Ebene des Dokuments. Wie es zu lösen ist?
Dies ist mein fort post auf stackoverflow. Ich habe gesucht, viele ähnliche Q&A ' s auf dieser Seite, aber meine Bedingungen scheinen ein wenig anders. hier ist mein vbscript-code:
------------ code-snippet ---------------
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
------------ Ende code-snippet ---------------
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>
Ich habe auch versucht, das entfernen der ersten Zeile, im Fall vielleicht UTF-8 war nicht kompatibel mit windows (habe einige posts über diesem), aber ich habe immer noch den gleichen Fehler. Ich habe auch versucht, unix2dos und Umgekehrt im Fall gab es Wagenrücklauf Fragen (versteckte Charaktere, eingebettet in der xml-Datei). Ich kann einfach nicht scheinen, um herauszufinden, was falsch ist. Es ist so ein simole XML-Datei. Ich konnte analysiert werden, in ein paar Minuten mit perl-regex, aber ich brauche, um dieses Skript ausführen, auf windows mit vbscript. Ich benutze die gleiche Technik zum analysieren von XML-Daten aus anderen Quellen ohne Probleme. Ich kann nicht ändern Sie die XML-leider ist es aus einer externen Quelle.
Ich habe diese exakte gleiche Fehler sowohl auf meinem Windows Vista home edition und Windows Server 2008. Ich bin mit den vbscript-von der Kommandozeile zum testen so weit (also nicht in ASP).
Vielen Dank im Voraus,
Sam
InformationsquelleAutor hacker101 | 2012-06-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
xmlDoc.loadXML()
können, laden Sie eine XML-Zeichenfolge. Es kann nicht abrufen einer URL.Verwendung eines XMLHTTPRequest-Objekts, wenn Sie benötigen, um eine HTTP-Anfrage.
Verwenden, wie
Aber warum?
responseXML
schon ist ein perfekt gültiges XML-Dokument-Objekt. Es gibt überhaupt keine Notwendigkeit zum analysieren derresponsText
auch. Alles, Sie tun ist, erstellen Sie ein zweites Dokument-Objekt, throwsing der erste Weg.Ich wurde immer Fehlermeldungen, die vorher aus irgendeinem Grund. Du hast Recht! Das ist viel besser, weniger code und weniger Laufzeit-overhead. genial. Nochmals vielen Dank!
Vergessen Sie nicht, die Antwort akzeptieren. 🙂 Schöne erste Zeit Frage BTW. Code, Erklärungen, alles da. Das ist, wie es sein soll.
InformationsquelleAutor Tomalak
Drei neben Bemerkungen:
(1).parseError.Grund neigt zu sein, kryptisch, es lohnt sich, zu zählen sein .srcTxt
Eigenschaft (und die parameter .loadXml):
Ausgabe:
Natürlich ist das schreiben einer Funktion/Sub, nimmt alle Eigenschaften der .parseError
Berücksichtigung und Nutzung, dass immer, wäre es noch besser.
(2) Zum laden einer Datei oder die URL verwenden .Belastung:
Ausgabe:
(3) Mit dem DOM vermeidet alle encoding-Probleme (das ist der Grund, warum ich einige
Deutsche Umlaute in 'Ihrem' Datei - die schaffte es sogar bis in die DOS-Box ausgegeben)
und macht RegExps (sogar Perl) eine zweite beste Wahl.
+1. Nützliche Ergänzungen. Ich wusste nicht, XMLDOM könnte das laden von URLs.
InformationsquelleAutor Ekkehard.Horner