XML學習手冊

  1. 生成xml;

  • 新建一個CreateXml

  • 創建一個簡單的xml;

  • 1///<summary>

  • 2///創建簡單的xml並保存

  • 3///</summary>

  • 4publicstaticvoidCreateElement()

  • 5{

  • 6XDocumentxdoc=newXDocument(

  • 7newXDeclaration("1.0","utf-8","yes"),

  • 8newXElement("root",

  • 9newXElement("item","1"),

  • 10newXElement("item","2")

  • 11));

  • 12xdoc.Save(Path);

  • 13}

·當xml有很多項時,我們就需要利用註釋加以區別,通過linq to xml我們一樣可以在其中添加註釋

Advertisements

XDocumentdoc=newXDocument(newXDeclaration("1.0","utf-8","yes"),newXComment("提示"),newXElement("item","asd"));

很多時候我們都會將數組之類的類型轉換成xml以便保存進永久性存儲介質中,所以下面我們也簡單的舉了一個例子,將數組轉換成xml

XElementxele=newXElement("Root",fromiteminsselectnewXElement("item",item.ToString()));

有時我們不想創建新的子項去保存數據,而是使用屬性的方式去保存。理所應當,linq to xml一樣也支持這個功能,下面我們可以通過簡單的語句去實現它。

Advertisements

XAttributexa=newXAttribute("V2","2");XElementxele=newXElement("Root",newXElement("Item",newXAttribute("V1","1"),xa1));

對於一些企業級的xml格式,會非常的嚴格。特別是在同一個xml中可能會出現重複的項,但是我們又想區分開來,這個時候我們可以利用命名空間將他們分開

XElementxele=newXElement("{http://www.xamarin-cn.com}Root",newXElement("Item","1"),newXElement("{http://www.baidu.com}Item",2));

節點前後插入新的節點

XElementxele=XElement.Load(Path);varitem=(fromeleinxele.Elements("Item")whereele.Value.Equals("Item2")selectele).SingleOrDefault();if(item!=null){XElementnele=newXElement("NItem","NItem");XElementnele2=newXElement("BItem","BItem");item.AddAfterSelf(nele);item.AddBeforeSelf(nele2);xele.Save(Path);}

通過SetAttributeValue去添加新的屬性或者修改現有屬性

XElementxele=XElement.Parse(@"<?xmlversion='1.0'encoding='utf-8'?><Root><!--前面的註釋--><Itemv1='1'v2='2'>Item1</Item><!--後面的註釋--><Itemv1='1'v2='2'v3='3'>Item2</Item></Root>");varitem=(fromeleinxele.Elements("Item")whereele.Value.Equals("Item2")selectele).SingleOrDefault();item.SetAttributeValue("v3","3");

修改節點的值通過SetValue即可做到,但是有時涉及到子節點,而我們想一次性全部替換掉,那麼我們就需要使用ReplaceWith

刪除指定的屬性Remove;

通過Descendants獲取最底的節點,然後使用Ancestors獲取所有的父級節點,而AncestorsAndSelf則表示包含本身。

通過ElementsBeforeSelf獲取該節點之前的同級節點,當然我們還可以傳入參數作為限制條件。這裡我們通過查詢獲取了SubItem這個節點,並顯示該節點之前的同級節點。

關鍵就是ChangingChanged事件,其次就是在事件中判斷事件的來源;

數據量大時進行流讀取,通過XmlReaderCreate靜態方法打開xml文件,並通過Read一個節點的進行讀取,並判斷該節點的類型

Advertisements

你可能會喜歡