您好,登錄后才能下訂單哦!
最近使用Sgml組件,在使用XPath語句獲取Notes時,總是無法查找節點,卻能找屬性值類似"//@alt",
- StringBuilder sb = new StringBuilder();
- XPathDocument doc = new XPathDocument(new StringReader(sw.ToString()));
- XPathNavigator nav = doc.CreateNavigator();
- XPathNodeIterator nodes = nav.Select(xpath);
- while (nodes.MoveNext())
- {
- ***********
- }
結果發現原因就在于上面的xml文檔中使用了命名空間,當xml中定義了命名空間時,在查找節點的時候需要使用下面的方法:
參數 =》 strNamespaceURL = “//ns:body”;
- StringBuilder sb = new StringBuilder();
- XPathDocument doc = new XPathDocument(new StringReader(sw.ToString()));
- XPathNavigator nav = doc.CreateNavigator();
- XmlNamespaceManager nsMgr = new XmlNamespaceManager(nav.NameTable);
- if (strNamespaceURL != null)
- {
- nsMgr.AddNamespace("ns", strNamespaceURL);
- }
- XPathNodeIterator nodes = nav.Select(xpath, nsMgr);
- while (nodes.MoveNext())
- {
- ********
- }
注意添加的命名空間名:ns也是區分大小寫的
可參照文章:
http://www.cnblogs.com/linlf03/archive/2011/11/30/2268705.html
http://developer.51cto.com/art/200908/144652.htm
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。