Я пытаюсь проанализировать XML-файл в Javascript, игнорируя пространство имен XML-файла. Я не ожидаю, что пространство имен xml-файла изменится в будущем, хотя я был бы счастлив, если бы код работал, даже если пространство имен изменилось произвольно. Я безуспешно пытался следовать этим инструкциям .
Что мне нужно изменить, чтобы моя вторая версия успешно нашла узел xml? Ниже мой код, который не работает, как ожидалось. В частности, третий вызов Components.utils.reportError
выводит null
).
Javascript (в расширении Firefox):
Components.utils.reportError("XML A: " + docky.documentElement);
var testxpath = '//' + docky.documentElement.tagName + ":entry";
Components.utils.reportError("Test XPath: " + testxpath);
Components.utils.reportError(docky.evaluate(testxpath, docky,
function(){return 'http://tempuri.org/';},
XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue);
XML-файл:
<OutputBlob xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://tempuri.org/">
<rnd>
<double>0.23500252665719135</double>
<double>0.82559380951597994</double>
<double>0.33431208335529644</double>
<double>0.91389494431852125</double>
</rnd>
</OutputBlob>
Выход:
XML A: [object Element]
Test XPath: //OutputBlob:entry
null
Вариант моего кода, найденный ниже (то есть, где пространства имен не задействованы), работает как ожидалось. То есть третий вызов Components.utils.reportError
не выводит null
.
Javascript (в расширении Firefox):
Components.utils.reportError("XML A: " + docky.documentElement);
var testxpath = '//' + docky.documentElement.tagName;
Components.utils.reportError("Test XPath: " + testxpath);
Components.utils.reportError(docky.evaluate(testxpath, docky, null,
XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue);
XML-файл:
<OutputBlob xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" >
<rnd>
<double>0.23500252665719135</double>
<double>0.82559380951597994</double>
<double>0.33431208335529644</double>
<double>0.91389494431852125</double>
</rnd>
</OutputBlob>
Выход:
XML A: [object Element]
Test XPath: //OutputBlob
[object Element]