Несмотря на все различия, IE и Firefox на имеют множество один вых свойств и методов, применяемых для извлечения данных X содержащихся в документе. Как и в IE, ссылку на корневой элем можно получить посредством свойства documentElement:
var oRoot = oXmlDom.documentElement;
Кроме того, Firefox поддерживает следующие свойства, регламе руемые стандартами W3C: attributes, childNodes, firstChild, lastCh" nextSibling, nodeName, nodeType, nodeValue,ownerDocument, parentNode и p viousSibling. К сожалению, Firefox не поддерживает свойства t и xml, но благодаря его гибкости их поведение нетрудно эмулирова
Коротко напомним, что свойство text возвращает содержимое или объединенный текст текущего узла и всех вложенных в него лов. Таким образом, оно возвращает не только текст из существую го узла, но и текст, содержащийся во всех его дочерних узлах. Это ведение достаточно просто эмулируется. Ниже приводится прос функция, которая принимает ссылку на узел в качестве аргум и возвращает тот же самый результат, что и свойство text в IE:
function getText(oNode) { var sText = "";
for (var i = 0; i < oNode.childNodes.length; i++) { if (oNode.childNodes[i].hasChildNodes()) { sText += getText(oNode.childNodes[i]); } else {
sText += oNode.childNodes[i].nodeValue; return sText;
Локальная переменная sText в функции getText() предназначена хранения всех текстовых фрагментов, извлекаемых из узлов. В цикла for для каждого дочернего узла oNode выясняется, имеет ли дочерние узлы. Если имеет, то его childNode передается в рекурси вызов функции getText (). Если дочерние узлы отсутствуют, то к ке результата добавляется значение свойства nodeValue текущего (для текстовых узлов это просто текстовая строка). После обра всех дочерних узлов функция возвращает содержимое переме sText.
Свойство xml в IE выполняет сериализацию всего кода XML, соде щегося в текущем узле. В Firefox тот же результат достигается с п щью объекта XMLSerializer. Этот объект имеет единственныйм доступный из JavaScript, который называется serializeToString(). С помощью этого метода выполняется сериализация кода XML:
w function serializeXml(oNode) {
var oSerializer = new XMLSerializer(); return oSerializer.serializeToString(oNode);
Функция serializeXml() принимает в качестве аргумента ссылку на узел XML. Она создает объект XMLSerializer и передает узел методу seriali-2eToString(). Результат этого метода - код XML в виде строки - возвра¬щается в вызывающую функцию.
Для манипулирования узлами в Firefox применяются те же методы D0M, что ивШ. За информацией по этой теме обращайтесь к разделу «Манипулирова¬ние структурой D0M в 1Е» этой главы.