Не получается создать объект Microsoft.XMLDOM

Обсуждение вопросов клиентского программирования.

Модератор: Duncon

Ответить
avmir
Сообщения: 2
Зарегистрирован: 10 мар 2006, 15:12

В данный момент изучаю XML. Хотел “поиграться” с классом Microsoft.XMLDOM.
Написал такой HTML файлик:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>DOM scripting</title>
</head>
<script language="JScript">
<!-- hide script from older browsers
var oMystuff = new ActiveXObject("Microsoft.XMLDOM")
oMystuff.async="false"
oMystuff.load("message01.xml")
alert(oMystuff.text)
-->
</script>
<body>
Done!
</body>
</html>

По идее он должен был вывести все текстовые узлы файла message01.xml в окне сообщений. Но объект Microsoft.XMLDOM не создается. Может, кто подскажет, что можно сделать…
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

avmir, почему ты считаешь, что не создаётся?

В Интернет Эксплорере данный код отработал на ура!

Другое дело, что в ФФ он не проходит, это да.

Вот кроссбраузерный вариант:

Код: Выделить всё

<html>
<head>
<script type="text/javascript">
var xmlDoc;

/**
  * load xml file
  */
function loadXML() {

	if (window.ActiveXObject) { // code for IE

		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async=false;
		xmlDoc.load("test.xml");
		getmessage()

	} else if (document.implementation && document.implementation.createDocument) { // code for Mozilla, etc.

		xmlDoc= document.implementation.createDocument("","",null);
		xmlDoc.load("test.xml");
		xmlDoc.onload=getmessage

	} else {

		alert('Your browser cannot handle this script');

	}
}

function getmessage() {

	document.getElementById("to").innerHTML=xmlDoc.getElementsByTagName("to")[0].firstChild.nodeValue;
	document.getElementById("from").innerHTML=xmlDoc.getElementsByTagName("from")[0].firstChild.nodeValue;
	document.getElementById("header").innerHTML=xmlDoc.getElementsByTagName("header")[0].firstChild.nodeValue;
	document.getElementById("body").innerHTML=xmlDoc.getElementsByTagName("body")[0].firstChild.nodeValue;

}
</script>
</head>

<body onload="loadXML()">




[b]To:[/b] <span id="to"></span>

[b]From:[/b] <span id="from"></span>



[b]Title:[/b] <span id="header"></span>



[b]Message:[/b] <span id="body"></span>

</body>
</html>
И тестовый XML файлик:

Код: Выделить всё

<?xml version="1.0" encoding="UTF-8"?>
<xml id="note">
<note>
  <to>SomebodyTo</to>
  <from>SombodyFrom</from>
  <header>Header</header>
  <body>Body</body>
</note>
</xml>
Честно содрано с W3Schools
(Первая ссылка гугля, кстати)

Но что меня больше всего порадовало, так это то, что XML он подгружает не только с локального компьютера, но и с сервера, находись оба файла на сервере.
Был очень приятно удивлён. Не ожидал даже.

Может кто-нибудь знает, какие браузеры поддерживают ActiveXObjectы, а какие - нет?
avmir
Сообщения: 2
Зарегистрирован: 10 мар 2006, 15:12

К сожалению, мой скрипт не работал в IE, потому и возник вопрос.
Oscar, просвети что такое "ФФ"?
За код спасибо - попробую :)
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

avmir, ФаерФокс (Mozilla Firefox)
Ответить