2010-05-25 108 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元素看起來應該有它的文本值,但它實際上是一個具有單個子節點的元素。子節點是文本節點及其具有該值的文本節點。