2010-05-25 77 views
0

我有一个返回XMLDocument的ASP.NET Web服务。 Web服务使用XMLHttpRequest从Firefox扩展中调用。返回XML结果和nodevalue的ASP.NET Web服务始终为空

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

我使用responseXML消耗结果。到现在为止还挺好。但是,当我遍历XML时,我检索nodeValue - nodeValue始终为空。当我检查nodeType时,nodeType是类型1(Node.ELEMENT_NODE == 1)。

Node.NodeValue声明Element类型的所有节点都将返回null。

在我的web服务我创建了一个字符串的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

我只是不得不停下来阅读文档。

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

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

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