c# xml解析通過xpath的方式是如何辦到的呢?具體的操作步驟是什麼呢?那麼下面我們就向你介紹通過xpath的方式來實現c# xml解析,希望對你了解c# xml解析有所幫助。
c# xml解析通過xpath的方式的步驟:
1、需要先載入文件,然後再讀取想要的節點值。
◆xml文件
protected xmldocument doc = null;
◆xml文件的根元素(節點)
protected xmlelement root = null;
◆xml文件的名空間管理器
protected xmlnamespacemanager nsmgr = null;
2、接下來就是載入文件了
protected void loadxmlfile(fileinfo xmlfile) 。", xmlfile.fullname)); } //載入檔案 this.doc = new xmldocument(); doc.load(xmlfile.fullname); //準備讀取檔案 root = doc.documentelement; string namespace = root.namespaceuri; nsmgr = new xmlnamespacemanager(doc.nametable); nsmgr.addnamespace("ns", namespace); }
◆c# xml解析通過xpath的方式要注意。
a、這兩行是取得xml文件的名空間
root = doc.documentelement; string namespace = root.namespaceuri;
b、這兩行是建立xml文件的名空間管理器
nsmgr = new xmlnamespacemanager(doc.nametable); nsmgr.addnamespace("ns", namespace);
如果你的xml文件有名空間,則這部分的**是必不可少的。
3、接下來就是讀取文件節點的值了
這裡兩個傳入引數prefixpath是節點的上級節點路徑,xrelativepath是要讀取的節點名稱。
另外,變數xmlfileinfo是要載入的xml檔案。
protected string getnodevalue( string prefixpath, string xrelativepath) string xpath = string.empty; if (!string.isnullorempty(xrelativepath)) else } xpath = xpath.replace("/", "/ns:"); xmlnode node = root.selectsinglenode(xpath, nsmgr); if (node == null) return node.innerxml; }
可能有的朋友要問,為什麼要設定兩個引數prefixpath和xrelativepath呢,其實這個沒有多大的關係,我只是為了自己覺得方便,你也可以在方法外確定了這個xpath,在方法中只設定乙個傳入引數,效果是一樣的。
◆注意這一行:
xpath = xpath.replace("/", "/ns:");
如果你的xml文件帶名空間,則這行是比不可少的,否則會出現找不到節點,無法解析的情況。
關於xpath的一些問題:
對於這樣乙個xml文件,要查詢第乙個節點下的學生的name時(id=01),其xpath應該是"/ns:root/ns:students/ns:student[1]/ns:name"。xml對於重複的節點名稱,是按照順序1,2,3...的方式遍歷的,也就是說如果要找第n個student節點的下的節點之,那麼應使用student[n]的標識方式。
﹤?xml version="1.0" encoding="utf-8" ?﹥ ﹤root xmlns="urn:classnamespace"﹥ ﹤class﹥ ﹤classid﹥1234﹤/classid﹥ ﹤/class﹥ ﹤students﹥ ﹤student﹥ ﹤id﹥01﹤/id﹥﹤name﹥name01﹤/name﹥ ﹤/student﹥ ﹤student﹥ ﹤id﹥02﹤/id﹥﹤name﹥name02﹤/name﹥ ﹤/student﹥ ﹤/students﹥ ﹤/root﹥
當然,這裡也可以獲取節點屬性的值,查詢滿足特定值的節點等等,這些和上面獲取節點值的過程是類似的。
C XML解析方式例項解析
c xml解析通過xpath的方式是如何辦到的呢?具體的操作步驟是什麼呢?那麼下面我們就向你介紹通過xpath的方式來實現c xml解析,希望對你了解c xml解析有所幫助。c xml解析通過xpath的方式的步驟 1 需要先載入文件,然後再讀取想要的節點值。xml文件 protected xmld...
C XML解析方式例項解析
c xml解析通過xpath的方式是如何辦到的呢?具體的操作步驟是什麼呢?那麼下面我們就向你介紹通過xpath的方式來實現c xml解析,希望對你了解c xml解析有所幫助。c xml解析通過xpath的方式的步驟 1 需要先載入文件,然後再讀取想要的節點值。xml文件 protected xmld...
C XML解析方式例項解析 帶命名空間的
c xml解析通過xpath的方式的步驟 1 需要先載入文件,然後再讀取想要的節點值。xml文件 protected xmldocument doc null xml文件的根元素 節點 protected xmlelement root null xml文件的名空間管理器 protected xml...