C# 创建XML文档

简介:

有些时候我们需要生成一个xml文档作为数据交换的容器。当然我们用拼接字符串的方法来进行构建xml,但是这种方法虽然简单有效,但是如果xml文档结构过于复杂,拼接字符串会让人眼花缭乱。这时候就需要C#给我们提供现成的类库,以供我们自由的创建xml文档。

比如我们要创建如下的xml文档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<? xml  version = "1.0"  encoding = "UTF-8" ?>
< ns0:Z_AVS_UPLOAD_WEIGHT_Request  xmlns:ns0 = "http://schemas.microsoft.com/BizTalk/2003" >  
     < ZWERKS >ZFM1</ ZWERKS >
     < TAB1 >
         < ZNO >13022101</ ZNO >
         < ZORDER >2013238955</ ZORDER >
         < ZWEIGHT >4140</ ZWEIGHT >
     </ TAB1 >
     < TAB1 >
         < ZNO >13022101</ ZNO >
         < ZORDER >2013239627</ ZORDER >
         < ZWEIGHT >4140</ ZWEIGHT >
     </ TAB1 >
</ ns0:Z_AVS_UPLOAD_WEIGHT_Request >

选取这样的结构,一方面是因为它来自于论坛某位坛友实际的需求,另一方面它足够简单却有代表性。

下面我将以这个例子用两种方法(XmlDocument和Linq to XML)进行讲解。

1、XmlDocument

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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
XmlDocument document =  new  XmlDocument();
               
XmlDeclaration declaration = document.CreateXmlDeclaration( "1.0" "UTF-8" "" ); //xml文档的声明部分
document.AppendChild(declaration);
               
XmlElement root = document.CreateElement( "ns0" "Z_AVS_UPLOAD_WEIGHT_Request" "http://schemas.microsoft.com/BizTalk/2003" );
document.AppendChild(root);
               
XmlElement zwerks = document.CreateElement( "ZWERKS" );
zwerks.InnerText =  "ZFM1" ;
root.AppendChild(zwerks);
               
XmlElement tab1 = document.CreateElement( "TAB1" );
root.AppendChild(tab1);
               
XmlElement zno = document.CreateElement( "ZNO" );
zno.InnerText =  "13022101" ;
tab1.AppendChild(zno);
               
XmlElement zorder = document.CreateElement( "ZORDER" );
zorder.InnerText =  "2013238955" ;
tab1.AppendChild(zorder);
               
XmlElement zweight = document.CreateElement( "ZWEIGHT" );
zweight.InnerText =  "4140" ;
tab1.AppendChild(zweight);
               
XmlElement tab2 = document.CreateElement( "TAB1" );
root.AppendChild(tab2);
               
XmlElement zno2 = document.CreateElement( "ZNO" );
zno2.InnerText =  "13022101" ;
tab2.AppendChild(zno2);
               
XmlElement zorder2 = document.CreateElement( "ZORDER" );
zorder2.InnerText =  "2013238955" ;
tab2.AppendChild(zorder2);
               
XmlElement zweight2 = document.CreateElement( "ZWEIGHT" );
zweight2.InnerText =  "4140" ;
tab2.AppendChild(zweight2);
               
document.Save( "test.xml" ); //将生成好的xml保存到test.xml文件中

2、Linq to XML

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
XDocument document =  new  XDocument();
document.Declaration =  new  XDeclaration( "1.0" "UTF-8" "" );
          
XNamespace ns =  "http://schemas.microsoft.com/BizTalk/2003" ;
          
XElement root =  new  XElement(ns +  "Z_AVS_UPLOAD_WEIGHT_Request" ,
     new  XAttribute(XNamespace.Xmlns +  "ns0" "http://schemas.microsoft.com/BizTalk/2003" ));
          
root.Add( new  XElement( "ZWERKS" "ZFM1" ),
     new  XElement( "TAB1" ,
         new  XElement( "ZNO" , 13022101),
         new  XElement( "ZORDER" , 2013238955),
         new  XElement( "ZWEIGHT" , 4140)),
     new  XElement( "TAB1" ,
         new  XElement( "ZNO" , 13022101),
         new  XElement( "ZORDER" , 2013238955),
         new  XElement( "ZWEIGHT" , 4140))
         );
          
document.Add(root);
document.Save( "test.xml" ); //保存xml到文件

可以发现Linq to XML的方法比较简洁,代码量也足够小。当然了XmlDocument的方法可以进一步的简化,这里重点展示一下Linq to XML的魅力。

呵呵,如上只当给需要的朋友提供一下思路和解决方案。关于Linq to xml的更多信息可以参考:XNamespace



本文转自 guwei4037  51CTO博客,原文链接:http://blog.51cto.com/csharper/1345986

相关文章
|
6月前
|
XML 存储 JavaScript
DOM 节点遍历:掌握遍历 XML文档结构和内容的技巧
**XML DOM 遍历、操作和导航概述** - 遍历XML节点树用于提取信息,例如,通过JavaScript的DOM API循环`&lt;book&gt;`子节点显示名称和值。 - DOM解析器处理XML文本数据,包括解析字符数据(PCDATA)和识别CDATA段。 - 节点导航涉及`parentNode`、`childNodes`等属性,`get_nextSibling`等辅助函数避免空文本节点。 - `getElementsByTagName`、`getAttribute`和`nodeValue`用于检索元素、属性值和文本。
92 6
DOM 节点遍历:掌握遍历 XML文档结构和内容的技巧
|
6月前
|
XML C# 数据格式
使用C#操作XML文件
使用C#操作XML文件
|
3月前
|
XML 数据采集 存储
使用Java和XPath在XML文档中精准定位数据
在数据驱动的时代,从复杂结构中精确提取信息至关重要。XML被广泛用于数据存储与传输,而XPath则能高效地在这些文档中导航和提取数据。本文深入探讨如何使用Java和XPath精准定位XML文档中的数据,并通过小红书的实际案例进行分析。首先介绍了XML及其挑战,接着阐述了XPath的优势。然后,提出从大型XML文档中自动提取特定产品信息的需求,并通过代理IP技术、设置Cookie和User-Agent以及多线程技术来解决实际网络环境下的数据抓取问题。最后,提供了一个Java示例代码,演示如何集成这些技术以高效地从XML源中抓取数据。
133 7
使用Java和XPath在XML文档中精准定位数据
|
2月前
|
XML JSON 数据处理
C# 中的 XML 与 JSON 数据处理
在现代软件开发中,数据交换和存储需求日益增长,XML 和 JSON 成为最常用的数据格式。本文从 C# 角度出发,详细介绍如何处理这两种格式,并提供示例代码。对于 XML,我们介绍了读取、创建和写入 XML 文件的方法;对于 JSON,则展示了如何使用 Newtonsoft.Json 库进行数据解析和序列化。此外,文章还总结了常见问题及其解决方案,帮助开发者更好地应对实际项目中的挑战。
180 61
C# 中的 XML 与 JSON 数据处理
|
21天前
|
XML C# 开发工具
C# 删除Word文档中的段落
【11月更文挑战第3天】本文介绍了两种方法来操作 Word 文档:一是使用 `Microsoft.Office.Interop.Word` 库,适用于 Windows 环境下操作 Word 文档,需引用相应库并在代码中引入命名空间;二是使用 Open XML SDK,适用于处理 .docx 格式的文档,通过引用 `DocumentFormat.OpenXml` 库实现。文中提供了示例代码,展示了如何打开、删除段落并保存文档。
|
1月前
|
XML 存储 缓存
C#使用XML文件的详解及示例
C#使用XML文件的详解及示例
96 0
|
1月前
|
XML JSON 前端开发
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
372 0
|
6月前
|
XML 存储 C#
C# xml文档反序列化记事
本文介绍了使用XmlSerializer进行XML序列化和反序列化的关键点。包括:1) 以独占方式读取XML文件以避免并发问题;2) 当元素名与类型名不一致时,可通过`[XmlArrayItem]`指定元素名,或创建继承自原始类型的子类;3) 处理DateTime反序列化错误,通过中间字符串属性转换;4) 提到了常用C#特性如`[XmlRoot]`, `[XmlElement]`, `[XmlAttribute]`, `[XmlIgnore]`和`[XmlArrayItem]`的作用。
|
6月前
|
XML C# 数据格式
C# 解析XML文件
C# 解析XML文件
96 1
|
6月前
|
XML JavaScript 数据格式
XML Schema(XSD)详解:定义 XML 文档结构合法性的完整指南
XML Schema(XSD)是用于定义XML文档结构的规范,它描述了元素、属性及其顺序、数据类型和约束。与DTD相比,XML Schema支持更多数据类型,如字符串、日期等,并且是基于XML的,允许扩展和重用。学习XML Schema有助于确保数据通信时双方对内容的理解一致,通过验证防止错误。示例展示了如何定义一个`note`元素,包含`to`, `from`, `heading`和`body`子元素,都是字符串类型。XML文档可以通过引用XML Schema进行验证,确保内容符合预设模式。
509 0