C XML解析方式例項解析

2021-09-06 02:07:13 字數 2255 閱讀 7438

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解析方式例項解析1

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...