Ошибка XPath в Google Chrome? - PullRequest
       0

Ошибка XPath в Google Chrome?

2 голосов
/ 20 января 2012

Мне нужно получить доступ к XML-документу, который я создал с помощью JavaScript, через XPath.Если я загружаю XML-файл с сервера (через XMLHttpRequest), он работает нормально, но если я использую ссылку на XML-документ из локально созданного XML-документа, Chrome ничего не показывает, а Firefox сделал то, что ожидал.

Вот немного примера кода:

<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
</head>
<body>
<script type="text/javascript">
        var xml = document.implementation.createDocument("", "", null);

        var root = xml.createElement("root");

        var level1 = xml.createElement("L1");
        var level2 = xml.createElement("L2");
        L2txt = xml.createTextNode("here is L2");

        level2.appendChild(L2txt);
        level1.appendChild(level2);

        var level2 = xml.createElement("L2");
        level2.setAttribute("id", "myId");
        L2txt = xml.createTextNode("here is L2 with id");

        level2.appendChild(L2txt);
        level1.appendChild(level2);
        root.appendChild(level1);

        path="//L2[@id='myId']";

        var nodes=xml.evaluate(path, root, null, XPathResult.ANY_TYPE, null);
        var result=nodes.iterateNext();

        while (result) {
          document.write(result.textContent);
          document.write("<br />");
          result=nodes.iterateNext();
        }
</script>
</body>
</html>

Код должен вывести «здесь есть L2 с идентификатором».

Я использую FF 9.0.1 и Chrome 16.0.912.75 m средства разработкине показывать ошибки или подсказки.

Теперь я не знаю, является ли это ошибкой в ​​Chrome или дополнительной функцией в Firefox.И - самое важное - как я могу заставить Chrome выглядеть как Firefox.Или у вас есть другая идея, как использовать XPath в локально созданных XML-документах?!

Заранее спасибо

1 Ответ

1 голос
/ 21 января 2012

Я вижу, у вас есть небольшая проблема в вашем примере кода.

Элемент root никогда не добавляется в документ XML (переменная xml).

Поэтому поиск XPath не может работать, так как объект документа xml не имеет корневого элемента и, следовательно, не имеет содержимого для поиска. Попробуйте добавить:

xml.appendChild(root);

После этого:

var root = xml.createElement("root");

Это исправляет проблему для меня в Chrome.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...