C# 简单的XML读取修改写入
XML概念
Root XML根節點,只能且必須有一個(以上為LinkLibrary)
Element 節點元素(如Link)
Attribute 節點屬性(如Cat, Url, Desc)
Content 內容(非空白文本、CDATA、Element、EndElement、EntityReference 或 EndEntity)節點
System.Xml空間
以下類適合快速流式讀寫XML文件(注:DOM適合隨機讀寫)
XmlReader, XmlWriter,
XmlTextReader, XmlTextWriter
XmlValidatingReader, XmlValidatingWriter 添加了DTD和模式驗證,因此提供了數據的有效性驗證
XmlNodeReader, XmlNodeWriter 把XmlNode作為其源
節點類型(public enum XmlNodeType)
XmlDeclaration XML 聲明(例如,<?xml version="1.0"?>)。
Attribute 屬性(例如,id="123")。
CDATA CDATA 節(例如,<![CDATA[my escaped text]]>)。
Comment 注釋(例如,<!-- my comment -->)
Document 作為文檔樹的根的文檔對象提供對整個 XML 文檔的訪問。
DocumentFragment 文檔片段。
DocumentType 由以下標記指示的文檔類型聲明(例如,<!DOCTYPE...>)。
Element 元素(例如,<item>)。
EndElement 末尾元素標記(例如,</item>)。
Entity 實體聲明(例如,<!ENTITY...>)。
EndEntity 由于調用 ResolveEntity 而使 XmlReader 到達實體替換的末尾時返回。
EntityReference 實體引用(例如,#)。
None 如果未調用 Read 方法,則由 XmlReader 返回。
Notation 文檔類型聲明中的表示法(例如,<!NOTATION...>)。
ProcessingInstruction 處理指令(例如,<?pi test?>)。
SignificantWhitespace 混合內容模型中標記間的空白或 xml:space="preserve" 范圍內的空白。
Text 節點的文本內容。
Whitespace 標記間的空白。
?------------------------------------------------------------------------
使用XmlTextWriter快速寫入
------------------------------------------------------------------------
開閉
XmlTextWriter writer = new XmlTextWriter(@"c:/mywriter.xml", null);
writer.Close();
起止XML文檔 (<?xml version="1.0"?>
writer.WriteStartDocument();
writer.EndDocument();
聲明XML格式
writer.Formatting = Formatting.Indented;
writer.Indentation = 縮進字符數
writer.IndentChar = 縮進字符
writer.QuoteChar = 單引號|雙引號
輸出注釋 (<!-- comment text -->)
writer.WriteComment("comment text");
輸出元素 (<Element>ElementVal</Element>)
writer.WriteElementString("Element", "ElementVal");
或者
writer.StartElement("Element");
writer.WriteString("ElementVal");
writer.EndElement();
輸出元素屬性 (<Element Property="PropertyVal">ElementVal</Element>)
writer.StartElement("Element");
writer.WriteAttributeString("Property", "PropertyVal");
writer.WriteString("ElementVal");
writer.EndElement();
輸出CDATA (<!CDATA>....</CDATA>
WriteCData("....")
輸出字符緩沖區文本
WriteChars(char[], startPos, length)
?
??已知有一個XML文件(bookstore.xml)如下:
| ? | <?xml version="1.0" encoding="gb2312"?> |
?
? 1、往<bookstore>節點中插入一個<book>節點:
| ? | ?? XmlDocument xmlDoc=new XmlDocument(); |
? //================
? 結果為:
| ? | <?xml version="1.0" encoding="gb2312"?> |
2、修改節點:將genre屬性值為“李贊紅“的節點的genre值改為“update李贊紅”,將該節點的子節點<author>的文本修改為“亞勝”。
| ? | ??? XmlNodeList nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//獲取bookstore節點的所有子節點 |
? //=================
? 最后結果為:
| ? | <?xml version="1.0" encoding="gb2312"?> |
?
? 3、刪除 <book genre="fantasy" ISBN="2-3631-4">節點的genre屬性,刪除 <book genre="update李贊紅" ISBN="2-3631-4">節點。
| ? | XmlNodeList xnl=xmlDoc.SelectSingleNode("bookstore").ChildNodes; |
?? if(xe.GetAttribute("genre")=="fantasy")
??? {
???? xe.RemoveAttribute("genre");//刪除genre屬性
??? }
??? else if(xe.GetAttribute("genre")=="update李贊紅")
??? {
???? xe.RemoveAll();//刪除該節點的全部內容
??? }
?? }
?? xmlDoc.Save("bookstore.xml");
? //====================
?
? 最后結果為:
| ? | <?xml version="1.0" encoding="gb2312"?> <bookstore> ? <book ISBN="2-3631-4"> ??? <title>Oberon's Legacy</title> ??? <author>Corets, Eva</author> ??? <price>5.95</price> ? </book> ? <book> ? </book> </bookstore> |
?
? 4、顯示所有數據。
| ? | ?XmlNode xn=xmlDoc.SelectSingleNode("bookstore"); |
?
?
------------------------------------------------------------------------
寫例程
------------------------------------------------------------------------
總結
以上是生活随笔為你收集整理的C# 简单的XML读取修改写入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux各发行版本简介
- 下一篇: C# XML 添加,修改,删除Xml节点