Это мой пост форта в stackoverflow. Я искал много похожих Q & A на этом сайте, но мои условия кажутся немного разными. вот мой VBScript код:VBScript и loadXML: недействительны на верхнем уровне документа. Как это исправить?
------------ фрагмент кода ---------------
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
---- -------- конец фрагмента кода ---------------
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>
Я также попытался удалить первую строку в случае, может быть UTF -8 несовместимо с окнами (видел некоторые сообщения об этом), но у меня все еще такая же ошибка. Я также пробовал unix2dos и наоборот в случае, если были проблемы с возвратом каретки (скрытые символы, встроенные в xml). Я просто не могу понять, что случилось. Это такой XML-файл simole. Я мог бы проанализировать его через несколько минут с использованием регулярного выражения perl, но мне нужно запустить этот скрипт на окнах, используя vbscript. Я использую тот же метод для анализа XML из других источников без каких-либо проблем. К сожалению, я не могу изменить XML, это из внешнего источника. У меня такая же ошибка как для моей домашней версии Windows Vista, так и для Windows Server 2008. Я запускаю vbscript из командной строки для тестирования до сих пор (т. Е. Не в ASP).
Спасибо заранее,
Сэм
Ваше решение работает, но с небольшими изменениями.Вместо того, чтобы: Set xmldoc = xmlhttp.ResponseXml Я изменил свою функцию загрузки (после HTTP GET): xmlDoc.loadXML (xmlhttp.responseText) Спасибо много, теперь у меня нет больше ошибок! Теперь мне просто нужно выяснить, как разбирать атрибуты узлов и что смешно смотреть! CDATA [] stuff LOL. – hacker101
@ hacker101 Но почему? 'responseXML' уже является вполне допустимым объектом документа XML. Нет необходимости вообще анализировать 'responsText' * * *. Все, что вы делаете, - это создать второй объект документа, отбросив первый. – Tomalak
По какой-то причине я получал сообщение об ошибке. Ты прав! Это намного лучше, меньше кода и меньше затрат времени на выполнение. здорово. Еще раз спасибо! – hacker101