溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

c# xml XPath SelectNodes, SelectSingleNode 無法獲取

發(fā)布時(shí)間:2020-06-20 10:35:06 來源:網(wǎng)絡(luò) 閱讀:1763 作者:mathed001 欄目:編程語(yǔ)言

  最近使用Sgml組件,在使用XPath語(yǔ)句獲取Notes時(shí),總是無法查找節(jié)點(diǎn),卻能找屬性值類似"//@alt",

 

  1. StringBuilder sb = new StringBuilder(); 
  2.                     XPathDocument doc = new XPathDocument(new StringReader(sw.ToString())); 
  3.                     XPathNavigator nav = doc.CreateNavigator(); 
  4.                     XPathNodeIterator nodes = nav.Select(xpath); 
  5.                     while (nodes.MoveNext()) 
  6.                     { 
  7.                         *********** 
  8.                     } 

 

結(jié)果發(fā)現(xiàn)原因就在于上面的xml文檔中使用了命名空間,當(dāng)xml中定義了命名空間時(shí),在查找節(jié)點(diǎn)的時(shí)候需要使用下面的方法:

參數(shù) =》 strNamespaceURL = “//ns:body”;

  1. StringBuilder sb = new StringBuilder(); 
  2. XPathDocument doc = new XPathDocument(new StringReader(sw.ToString())); 
  3. XPathNavigator nav = doc.CreateNavigator(); 
  4.  
  5. XmlNamespaceManager nsMgr = new XmlNamespaceManager(nav.NameTable); 
  6. if (strNamespaceURL != null
  7.     nsMgr.AddNamespace("ns", strNamespaceURL); 
  8. XPathNodeIterator nodes = nav.Select(xpath, nsMgr); 

  9. while (nodes.MoveNext()) 
  10.     ******** 

注意添加的命名空間名:ns也是區(qū)分大小寫的

 

可參照文章:

http://www.cnblogs.com/linlf03/archive/2011/11/30/2268705.html

http://developer.51cto.com/art/200908/144652.htm 

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI