在.NET中操作XmlDocument (轉)
大家想必一定都瞭解,利用XML技術來資料和文件是一件很容易的事情, 在它的名稱空間System.Xml 就提供了一種可以很方便的操作xml的類XmlDocument,它使用起來非常容易,XmlDocument 其實就是一個簡單的樹。下面詳細的介紹XmlDocument 的使用方法。
下面是這個類中操作節點的常用方法。
// create a new node in the document from the node
//and name it as "sName"
// the return value indicates success or failure
public bool AddNode(XmlNode oSource, String sName);
// same as above except that it also specifies the parent node of the
// newly created node
// the return value indicates success or failure (returns false if the
// parent node does not exist)
public bool AddNode(XmlNode oSource, String sName, String sParent);
// create a set of new nodes in the document object from the source node
// list and name them as "sName"
// the return value indicates success or failure
public bool AddNodes(XmlNodeList oSourceList, String sName);
// same as above except that it also specifies the parent node of the
// newly created nodes the return value indicates success or failure
// (returns false if the parent node
// does not exist)
public bool AddNodes(XmlNodeList oSourceList, String sName, String sParent);
// merge the source node into a node named "sName" in the document object
// the node named "sName" will be created if it does not exist
// the return value indicates success or failure
public bool MergeNode(XmlNode oSource, String sName);
// same as above except that it also specifies the parent node of the merged node
// the return value indicates success or failure (returns false if the parent node
// does not exist)
public bool MergeNode(XmlNode oSource, String sName, String sParent);
下面我們給一個增加節點的例子
docVechile.xml
doc.xml
下面的程式碼將增加一個節點:
Dim myDoc As XMLDocumentEx = New XMLDocumentEx() myDoc.LoadXml("") myDoc.AddNode(docVehicle.SingleNode("//Record"), "VehicleRecord", "Data") myDoc.AddNode(docDriver.SelectSingleNode("//Record"), "DriverRecord", "Data")
myDoc.xml
我們也可是使用AddNodes方法把一個記錄集的所有記錄增加到節點上:
Dim myDoc As XMLDocumentEx = New XMLDocumentEx() myDoc.LoadXml("
結果如下:
myDoc.xml
下面我介紹如何合併節點。假設我們有兩個XmlDocumentdocBook1和docBook2,
這兩個文件都包含
節點. 在docBook1
中的這個
節點 包含
,
, and
.
在docBook2
中的這個
節點 包含
,
, and
.
下面的程式碼演示如何合併這兩個book節點:
Dim myDoc As XMLDocumentEx = New XMLDocumentEx() myDoc.LoadXml("
合併後的效果如下:
myDoc.xml
下面是所有的:
sealed public class XMLDocumentEx: XmlDocument { public bool AddNode(XmlNode oSource, String sName) { return AddNode(oSource, sName, null); } public bool AddNode(XmlNode oSource, String sName, String sParent) { try { if(sName!=null&&oSource!= null) { // create the new node with given name XmlNode oNewNode = CreateElement(sName); // copy the contents from the source node oNewNode.InnerXml = oSource.InnerXml; // if there is no parent node specified, then add // the new node as a child node of the node if(sParent!= null) sParent = sParent.Trim(); if(sParent== null||sParent.Equals(String.Empty)) { DocumentElement.AppendChild(oNewNode); return true; } // otherwise add the new node as a child of the parent node else { if (!sParent.Substring(0,2).Equals("//")) sParent = "//"+sParent; XmlNode oParent = SelectSingleNode(sParent); if (oParent!=null) { oParent.AppendChild(oNewNode); return true ; } } } } catch (Exception) { // error handling code } return false; } public bool AddNodes(XmlNodeList oSourceList, String sName) { return AddNodes(oSourceList, sName, null); } public bool AddNodes(XmlNodeList oSourceList, String sName, String sParent) { try { if(oSourceList!= null) { // call AddNode for each item in the source node list // return true only if all nodes are added succesully int i = 0; while(i
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-998866/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- .Net中操作XmlDocument物件集錦 - XML做資料庫的管理程式XML物件資料庫
- .Net 在容器中操作宿主機
- C#操作XML的完整例子——XmlDocument篇C#XML
- 在Delphi中操作快捷方式 (轉)
- 也談用在ASP.Net中操作IIS (轉)ASP.NET
- 在VB.NET中尋找App (轉)APP
- 在VB.NET中執行基本的陣列操作陣列
- .net中xml基本操作XML
- 在C、JAVA、PHP中操作postgreSql資料庫 (轉)JavaPHPSQL資料庫
- 在DELPHI2.0/3.0中直接操作埠 (轉)
- 在JavaScript中操作CookieJavaScriptCookie
- Azure Data Lake(一) 在NET Core 控制檯中操作 Data Lake Storage
- 在 RedHat 中限制、允許telnet&ftp功能(轉)RedhatFTP
- Delphi 中的 XMLDocument 類詳解(9) - 關於 HasChildNodes 與 IsTextElementXML
- Azure Service Bus(二)在NET Core 控制檯中如何操作 Service Bus Queue
- 在C#中操作XML .C#XML
- 在ASP.NET中使用.NET元件 (轉)ASP.NET元件
- Attribute在.net程式設計中的應用(一) (轉)程式設計
- Attribute 在.NET程式設計中的應用(二) (轉)程式設計
- Attribute在.NET程式設計中的應用(四) (轉)程式設計
- Attribute在.NET程式設計中的應用(五) (轉)程式設計
- 在Asp.Net 中從sqlserver檢索(retrieve)圖片 (轉)ASP.NETSQLServer
- 在VB.Net中建立使用控制元件陣列 (轉)控制元件陣列
- 在.NET Framework中輕鬆處理XML資料(一) (轉)FrameworkXML
- 在ASP.NET中實現多檔案上傳 (轉)ASP.NET
- 在.NET Framework中輕鬆處理XML資料(五) (轉)FrameworkXML
- Attribute在.NET程式設計中的應用(三) (轉)程式設計
- 在VC中自建操作BMP點陣圖檔案的類 (轉)
- .NET中事務操作小結(1)
- Oracle中的LOB操作(轉)Oracle
- LiteDB在.NET中如何使用
- 在.Net中將MailMessage儲存為本地eml檔案(轉)AI
- 在.NET中輕鬆獲取系統資訊(1) -WMI篇 (轉)
- 在ASP.NET中物件導向的程式設計思想 (轉)ASP.NET物件程式設計
- 在ASP.NET中,向資料庫批次插入資料 (轉)ASP.NET資料庫
- 探秘Kubernetes:在本地環境中玩轉容器技術
- 在Linux系統中批次新增使用者的操作流程(轉)Linux
- 在Linux系統中,批次新增使用者的操作流程(轉)Linux