Веб-служба ASP.NET, возвращающая результат XML и значение узла всегда равно нулю - PullRequest
0 голосов
/ 26 мая 2010

У меня есть веб-сервис ASP.NET, который возвращает XMLDocument. Веб-сервис вызывается из расширения Firefox с использованием XMLHttpRequest.

var serviceRequest = new XMLHttpRequest();
serviecRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");

Я использую результат, используя responseXML. Все идет нормально. Но когда я перебираю XML, я получаю nodeValue - nodeValue всегда имеет значение null. Когда я проверяю nodeType, nodeType имеет тип 1 (Node.ELEMENT_NODE == 1).

Node.NodeValue заявляет, что все узлы типа Element будут возвращать ноль.

В моем веб-сервисе я создал строку с XML, т.е. xml="<Root><Book><Author>Hank</Author></Book></Root>"

Затем я создаю XmlDocument

XmlDocument doc = new XmlDocument();
doc.LoadXML(string);

Я знаю, что могу указать тип узла, используя CreateNode. Но когда я просто строю xml, добавляя строковые значения, есть способ изменить nodeType на Text, чтобы Node.nodeValue был «содержимым текстового узла».

1 Ответ

1 голос
/ 26 мая 2010

Мне просто нужно было остановиться и просмотреть документацию.

nodeValue - это стандартное свойство DOM, которое возвращает nodeValue. Типы узлов, такие как атрибуты или текст, имеют значение. Элементы не имеют значения - они имеют только дочерние узлы.

Так что вместо node.nodeValue мне просто нужно было вызвать node.firstChild.nodeValue.

Это потому, что простой элемент XML, который содержит только текст, кажется, что он должен иметь значение своего текста, но на самом деле это элемент с единственным дочерним узлом. Дочерний узел - это текстовый узел, а его текстовый узел имеет значение.

...