天天看點

C# 建立XML文檔

有些時候我們需要生成一個xml文檔作為資料交換的容器。當然我們用拼接字元串的方法來進行建構xml,但是這種方法雖然簡單有效,但是如果xml文檔結構過于複雜,拼接字元串會讓人眼花缭亂。這時候就需要C#給我們提供現成的類庫,以供我們自由的建立xml文檔。

比如我們要建立如下的xml文檔

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<code>&lt;?</code><code>xml</code> <code>version</code><code>=</code><code>"1.0"</code> <code>encoding</code><code>=</code><code>"UTF-8"</code><code>?&gt;</code>

<code>&lt;</code><code>ns0:Z_AVS_UPLOAD_WEIGHT_Request</code> <code>xmlns:ns0</code><code>=</code><code>"http://schemas.microsoft.com/BizTalk/2003"</code><code>&gt;  </code>

<code>    </code><code>&lt;</code><code>ZWERKS</code><code>&gt;ZFM1&lt;/</code><code>ZWERKS</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>TAB1</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>ZNO</code><code>&gt;13022101&lt;/</code><code>ZNO</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>ZORDER</code><code>&gt;2013238955&lt;/</code><code>ZORDER</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>ZWEIGHT</code><code>&gt;4140&lt;/</code><code>ZWEIGHT</code><code>&gt;</code>

<code>    </code><code>&lt;/</code><code>TAB1</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>ZORDER</code><code>&gt;2013239627&lt;/</code><code>ZORDER</code><code>&gt;</code>

<code>&lt;/</code><code>ns0:Z_AVS_UPLOAD_WEIGHT_Request</code><code>&gt;</code>

選取這樣的結構,一方面是因為它來自于論壇某位壇友實際的需求,另一方面它足夠簡單卻有代表性。

下面我将以這個例子用兩種方法(XmlDocument和Linq to XML)進行講解。

1、XmlDocument

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

<code>XmlDocument document = </code><code>new</code> <code>XmlDocument();</code>

<code>              </code> 

<code>XmlDeclaration declaration = document.CreateXmlDeclaration(</code><code>"1.0"</code><code>, </code><code>"UTF-8"</code><code>, </code><code>""</code><code>);</code><code>//xml文檔的聲明部分</code>

<code>document.AppendChild(declaration);</code>

<code>XmlElement root = document.CreateElement(</code><code>"ns0"</code><code>, </code><code>"Z_AVS_UPLOAD_WEIGHT_Request"</code><code>, </code><code>"http://schemas.microsoft.com/BizTalk/2003"</code><code>);</code>

<code>document.AppendChild(root);</code>

<code>XmlElement zwerks = document.CreateElement(</code><code>"ZWERKS"</code><code>);</code>

<code>zwerks.InnerText = </code><code>"ZFM1"</code><code>;</code>

<code>root.AppendChild(zwerks);</code>

<code>XmlElement tab1 = document.CreateElement(</code><code>"TAB1"</code><code>);</code>

<code>root.AppendChild(tab1);</code>

<code>XmlElement zno = document.CreateElement(</code><code>"ZNO"</code><code>);</code>

<code>zno.InnerText = </code><code>"13022101"</code><code>;</code>

<code>tab1.AppendChild(zno);</code>

<code>XmlElement zorder = document.CreateElement(</code><code>"ZORDER"</code><code>);</code>

<code>zorder.InnerText = </code><code>"2013238955"</code><code>;</code>

<code>tab1.AppendChild(zorder);</code>

<code>XmlElement zweight = document.CreateElement(</code><code>"ZWEIGHT"</code><code>);</code>

<code>zweight.InnerText = </code><code>"4140"</code><code>;</code>

<code>tab1.AppendChild(zweight);</code>

<code>XmlElement tab2 = document.CreateElement(</code><code>"TAB1"</code><code>);</code>

<code>root.AppendChild(tab2);</code>

<code>XmlElement zno2 = document.CreateElement(</code><code>"ZNO"</code><code>);</code>

<code>zno2.InnerText = </code><code>"13022101"</code><code>;</code>

<code>tab2.AppendChild(zno2);</code>

<code>XmlElement zorder2 = document.CreateElement(</code><code>"ZORDER"</code><code>);</code>

<code>zorder2.InnerText = </code><code>"2013238955"</code><code>;</code>

<code>tab2.AppendChild(zorder2);</code>

<code>XmlElement zweight2 = document.CreateElement(</code><code>"ZWEIGHT"</code><code>);</code>

<code>zweight2.InnerText = </code><code>"4140"</code><code>;</code>

<code>tab2.AppendChild(zweight2);</code>

<code>document.Save(</code><code>"test.xml"</code><code>);</code><code>//将生成好的xml儲存到test.xml檔案中</code>

2、Linq to XML

<code>XDocument document = </code><code>new</code> <code>XDocument();</code>

<code>document.Declaration = </code><code>new</code> <code>XDeclaration(</code><code>"1.0"</code><code>, </code><code>"UTF-8"</code><code>, </code><code>""</code><code>);</code>

<code>         </code> 

<code>XNamespace ns = </code><code>"http://schemas.microsoft.com/BizTalk/2003"</code><code>;</code>

<code>XElement root = </code><code>new</code> <code>XElement(ns + </code><code>"Z_AVS_UPLOAD_WEIGHT_Request"</code><code>,</code>

<code>    </code><code>new</code> <code>XAttribute(XNamespace.Xmlns + </code><code>"ns0"</code><code>, </code><code>"http://schemas.microsoft.com/BizTalk/2003"</code><code>));</code>

<code>root.Add(</code><code>new</code> <code>XElement(</code><code>"ZWERKS"</code><code>, </code><code>"ZFM1"</code><code>),</code>

<code>    </code><code>new</code> <code>XElement(</code><code>"TAB1"</code><code>,</code>

<code>        </code><code>new</code> <code>XElement(</code><code>"ZNO"</code><code>, 13022101),</code>

<code>        </code><code>new</code> <code>XElement(</code><code>"ZORDER"</code><code>, 2013238955),</code>

<code>        </code><code>new</code> <code>XElement(</code><code>"ZWEIGHT"</code><code>, 4140)),</code>

<code>        </code><code>new</code> <code>XElement(</code><code>"ZWEIGHT"</code><code>, 4140))</code>

<code>        </code><code>);</code>

<code>document.Add(root);</code>

<code>document.Save(</code><code>"test.xml"</code><code>);</code><code>//儲存xml到檔案</code>

可以發現Linq to XML的方法比較簡潔,代碼量也足夠小。當然了XmlDocument的方法可以進一步的簡化,這裡重點展示一下Linq to XML的魅力。

本文轉自 guwei4037  51CTO部落格,原文連結:http://blog.51cto.com/csharper/1345986