Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Вклеить часть XML в HTML. Как? (https://javascript.ru/forum/events/41248-vkleit-chast-xml-v-html-kak.html)

bogong 05.09.2013 17:51

Вклеить часть XML в HTML. Как?
 
Добрый день форумчанам ... Подскажите плиз как можно решить такую задачу: есть некий XML который приходит ко мне через AJAX и мне нужно кусок этого XML прикрепить к элементу с определенным id в документе HTML

Пример: мне нужно вклеить в тэг с id="forAdding" содержимое в тэге example id="2" из полученного XML
HTML
<!DOCTYPE html>
<html>
<head>
	<title></title>
	<script src="jsc/test.js" type="text/javascript"></script>
</head>
<body>
	<div id="forAdding"></div>
</body>
</html>

XML
<?xml version="1.0" encoding="UTF-8"?>
<root>
	<example id="1">
		<div class="test">
			<div></div>
		</div>
	</example>
	<example id="2">
		<div class="test">
			<div></div>
		</div>
	</example>
	<example id="2">
		<div class="test">
			<div></div>
		</div>
	</example>
</root>


PS. Просьба при возникновении желания написать нечто вроде: "зачем изобретать велосипед используй jquery\motools\prototype и т.д." воздержаться от этого так как меня интересут PURE JS!!!

BETEPAH 05.09.2013 23:09

а разве так не работает:
var doc = xhr.responseXML;
var assorti = doc.getElementsByTagName("example")

и разбирайте массив по полкам.
А от желания написать нечто вроде "используйте JSON" тоже воздерживаться? ;)

danik.js 06.09.2013 04:42

<!DOCTYPE html>
<body>
<script type="text/xml" id="xml-source">
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <example id="1">
        <div class="test" xmlns="http://www.w3.org/1999/xhtml">
            <div></div>
        </div>
    </example>
    <example id="2">
        <div class="test" xmlns="http://www.w3.org/1999/xhtml">
            <div><a href="#">Это должно быть ссылкой</a></div>
        </div>
    </example>
    <example id="2">
        <div class="test" xmlns="http://www.w3.org/1999/xhtml">
            <div></div>
        </div>
    </example>
</root>
</script>
<script>
(function(){
	var xmlSource = document.getElementById('xml-source').textContent.trim();
	var xmlDocument = new DOMParser().parseFromString(xmlSource, 'text/xml');
	var exampleNode = xmlDocument.getElementsByTagName('example')[1];
	document.body.appendChild(document.importNode(exampleNode.firstElementChild, true));
})()
</script>
</body>


Не будет работать в IE8 (там нет DOMParser'а и importNode, хотя может можно обойтись и без импорта)
Если xml'ка подтягивается через XMLHttpRequest, то DOMParser не нужен, так как XMLHttpRequest сам парсит документ.
Если html-нодам не указать пространство имен, то они будут реализовывать интерфейс HTMLUnknownElement, то есть "неизвестный элемент"

bogong 11.09.2013 15:03

Огромное спасибо - помогло


Часовой пояс GMT +3, время: 18:00.