C# 简单的XML读取修改写入
XML概念
Root XML根節(jié)點(diǎn),只能且必須有一個(gè)(以上為LinkLibrary)
Element 節(jié)點(diǎn)元素(如Link)
Attribute 節(jié)點(diǎn)屬性(如Cat, Url, Desc)
Content 內(nèi)容(非空白文本、CDATA、Element、EndElement、EntityReference 或 EndEntity)節(jié)點(diǎn)
System.Xml空間
以下類適合快速流式讀寫XML文件(注:DOM適合隨機(jī)讀寫)
XmlReader, XmlWriter,
XmlTextReader, XmlTextWriter
XmlValidatingReader, XmlValidatingWriter 添加了DTD和模式驗(yàn)證,因此提供了數(shù)據(jù)的有效性驗(yàn)證
XmlNodeReader, XmlNodeWriter 把XmlNode作為其源
節(jié)點(diǎn)類型(public enum XmlNodeType)
XmlDeclaration XML 聲明(例如,<?xml version="1.0"?>)。
Attribute 屬性(例如,id="123")。
CDATA CDATA 節(jié)(例如,<![CDATA[my escaped text]]>)。
Comment 注釋(例如,<!-- my comment -->)
Document 作為文檔樹的根的文檔對象提供對整個(gè) XML 文檔的訪問。
DocumentFragment 文檔片段。
DocumentType 由以下標(biāo)記指示的文檔類型聲明(例如,<!DOCTYPE...>)。
Element 元素(例如,<item>)。
EndElement 末尾元素標(biāo)記(例如,</item>)。
Entity 實(shí)體聲明(例如,<!ENTITY...>)。
EndEntity 由于調(diào)用 ResolveEntity 而使 XmlReader 到達(dá)實(shí)體替換的末尾時(shí)返回。
EntityReference 實(shí)體引用(例如,#)。
None 如果未調(diào)用 Read 方法,則由 XmlReader 返回。
Notation 文檔類型聲明中的表示法(例如,<!NOTATION...>)。
ProcessingInstruction 處理指令(例如,<?pi test?>)。
SignificantWhitespace 混合內(nèi)容模型中標(biāo)記間的空白或 xml:space="preserve" 范圍內(nèi)的空白。
Text 節(jié)點(diǎn)的文本內(nèi)容。
Whitespace 標(biāo)記間的空白。
?------------------------------------------------------------------------
使用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 = 縮進(jìn)字符數(shù)
writer.IndentChar = 縮進(jìn)字符
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("....")
輸出字符緩沖區(qū)文本
WriteChars(char[], startPos, length)
?
??已知有一個(gè)XML文件(bookstore.xml)如下:
| ? | <?xml version="1.0" encoding="gb2312"?> |
?
? 1、往<bookstore>節(jié)點(diǎn)中插入一個(gè)<book>節(jié)點(diǎn):
| ? | ?? XmlDocument xmlDoc=new XmlDocument(); |
? //================
? 結(jié)果為:
| ? | <?xml version="1.0" encoding="gb2312"?> |
2、修改節(jié)點(diǎn):將genre屬性值為“李贊紅“的節(jié)點(diǎn)的genre值改為“update李贊紅”,將該節(jié)點(diǎn)的子節(jié)點(diǎn)<author>的文本修改為“亞勝”。
| ? | ??? XmlNodeList nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//獲取bookstore節(jié)點(diǎn)的所有子節(jié)點(diǎn) |
? //=================
? 最后結(jié)果為:
| ? | <?xml version="1.0" encoding="gb2312"?> |
?
? 3、刪除 <book genre="fantasy" ISBN="2-3631-4">節(jié)點(diǎn)的genre屬性,刪除 <book genre="update李贊紅" ISBN="2-3631-4">節(jié)點(diǎn)。
| ? | XmlNodeList xnl=xmlDoc.SelectSingleNode("bookstore").ChildNodes; |
?? if(xe.GetAttribute("genre")=="fantasy")
??? {
???? xe.RemoveAttribute("genre");//刪除genre屬性
??? }
??? else if(xe.GetAttribute("genre")=="update李贊紅")
??? {
???? xe.RemoveAll();//刪除該節(jié)點(diǎn)的全部內(nèi)容
??? }
?? }
?? xmlDoc.Save("bookstore.xml");
? //====================
?
? 最后結(jié)果為:
| ? | <?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、顯示所有數(shù)據(jù)。
| ? | ?XmlNode xn=xmlDoc.SelectSingleNode("bookstore"); |
?
?
------------------------------------------------------------------------
寫例程
------------------------------------------------------------------------
總結(jié)
以上是生活随笔為你收集整理的C# 简单的XML读取修改写入的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux各发行版本简介
- 下一篇: 如何调整反光镜和座椅的位置 为您支招