返回XML结果和nodevalue的ASP.NET Web Service始终为null

时间:2010-05-25 21:56:18

标签: web-services asmx nodevalue

我有一个ASP.NET Web服务,它返回一个XMLDocument。使用XMLHttpRequest从Firefox扩展调用Web服务。

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类型的所有节点都将返回null。

在我的网络服务中,我创建了一个包含XML的字符串,即xml="<Root><Book><Author>Hank</Author></Book></Root>"

然后我创建了XmlDocument

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

我知道我可以使用CreateNode指定nodetype。但是,当我通过附加字符串值来构建xml时,有一种方法可以将nodeType更改为Text,因此Node.nodeValue将是“文本节点的内容”。

1 个答案:

答案 0 :(得分:1)

我必须停下来查看文档。

nodeValue是标准的DOM属性,它返回一个nodeValue。节点类型(如属性或文本)具有值。元素没有值 - 它们只有子节点。

所以而不是node.nodeValue我只需要调用node.firstChild.nodeValue。

这是因为只包含文本的简单XML元素看起来应该具有其文本的值,但它实际上是一个具有单个子节点的元素。子节点是文本节点,其文本节点具有值。