最后一站,LINQ学习之旅——最后一站"LTX"之XML基本操作(上)

在上一节中,对LINQ TO XML编程接口中的所用到的类做了介绍,而其中有些类只是简单的描述了一下其概念,而并未说明它们具体是如何使用的。而从今天开始,接下来的几节将讲解LINQ TO XML的基本操作,在这些操作中就会涉及到这些编程接口类的使用。今天主要讲的LINQ TO XML基本操作中的创建部分。
我们在创建一个xml文档时,首先要有XML的声明,LINQ TO XML中是用XDeclaration类来创建XML声明。如下声明方式:

其中version指明xml的版本号,且它必须放在属性列表的第一位。因为当前xml最新版本是1.0,所以所有的xml声明都是version="1.0"。而encoding用于设定xml文档的编码格式。GB2312为汉字编码。最后的standalone是指是否和一个单独的DTD文件配套使用。(注:no表示需要单独的dtd文件配套使用);
当我们需要对xml文档进行验证时,这时候就需要创建相应的xml文档类型,来验证该文档是否符合有效性。LINQ TO XML中用XDcoumentType类来创建xml文档类型。如下声明:

其中Sprites.dtd文档就是用来规定该xml文档是否符合dtd文档中描述的格式,从而来判定其是否有效。DTD(文档类型定义)正是让xml文件能成为数据交换标准,只要不同的公司定义好标准dtd,那么这些公司都能依这个dtd来建立XML文件,并且进行验证,如此就可以轻易的建立标准和交换数据,这样满足了网络共享和数据交互。 dtd文档类型定义可以声明与xml文档中,也可以单独作为一个文档,在xml文档中去调用它。一般dtd文档中的语句是被包装在一个DOCTYPE声明中。
有时在创建xml文档时,要引用css文档来定义xml文档内容的表现形式,这时候就需要创建相应的XML处理指令。在LINQ TO XML中用XProcessingInstruction类来创建XML处理指令。如下声明方式:

这样xml文档在浏览器的表现形式就有样式文件Sprites.css来决定了。
假如现在我们要把这样一行数据"

精灵

"放在一个xml标签中,那么当这组xml数据在被解析器解析时,会把H1标签当作xml元素来看待,这时就违背了当初的意愿。这时就需要创建XML CData值,在LINQ TO XML中是用CData类来创建的,如果文本中有类似">"或"<"这样的字符时,就需要放到CData标签中去。只要是在CData标签中的文本都被解析器忽略。
一个xml文档创建好了XML声明,文档类型或处理指令,接下来就要创建xml文档的主要部分了。其中xml文档中最主要的就是创建xml元素,在LINQ TO XML中是用XElement类来创建相应的xml元素的。该类的构造方法有很多种,而最常用的是下面两个:
①XElement(XName name, object content);
②XElement(XName name, params object[] content);
第一种原型限定了每个父节点只可能有一个子节点。其中参数content是表示xml元素的内容。相比较于第一种方法,第二种方法允许父节点可以包含多个子节点,该方法也体现了LINQ TO XML函数式的xml创建。
在上一节中有提到过,用LINQ TO XML建立xml文档除了用XElement类外,还有一种更加正式的方法:用XDocument来创建xml文档,为什么说它相对于XElement更加正式呢,因为用XDocumnt类建立xml文档可以包含一些与文档有关的信息,比如文档声明、文档类型定义等信息。
在xml文档的主要部分中除了xml元素必不可少之外,xml属性也是最常见到的。在LINQ TO XML中用XAttribute类来创建xml属性,它是关联到xml元素的名称—值类型,每一个XElement对象可以有多个XAttribute对象。
每种语言在它诞生的那一刻,都会伴随一种该语言的注释方法。xml也不例外,在LINQ TO XML中我们用XComment类来创建XML注释。
以上是用LINQ TO XML创建xml文档中的最主要的几个步骤。接下来按照这些创建步骤用示例来说明:
i.dtd文档
LINQ学习之旅——最后一站&quot;LTX&quot;之XML基本操作(上)最后一站LINQ学习之旅——最后一站&quot;LTX&quot;之XML基本操作(上)最后一站Sprites.dtd 1 2 3 4 5 6
ii.css样式文件:
Sprites.css 1 Sprite 2 { 3 margin:5px; 4 display:block; 5 background-color:#999; 6 } 7 8 Profession 9 { 10 font-family : "宋体"; 11 font-size :20pt; 12 color:#00C; 13 display:block; 14 text-align:center; 15 } 16 17 Weapon 18 { 19 font-family : "宋体"; 20 font-size :20pt; 21 color:#0C0; 22 display:block; 23 text-align:center; 24 }
iii.xml文档创建过程:
1 static void Main(string[] args) 2 { 3 //创建XML文档 4 XDocument xml = new XDocument(); 5 6 //创建XML声明 7 XDeclaration declaration = new XDeclaration("1.0", "GB2312", "no");//xml版本1.0,汉字编码,需要外部文档来解析 8 9 //创建XML文档类型 10 XDocumentType documenttype = new XDocumentType("Sprites",null,"Sprites.dtd",null);//外部解析文档Sprites.dtd 11 12 //创建XML处理指令 13 XProcessingInstruction instruction = new XProcessingInstruction("xml-stylesheet", "href=\"Sprites.css\" type=\"text/css\"");//引用Sprites.css文档来定义xml文档的表现形式 14 15 //创建XML CData值 16 XCData data1 = new XCData("

法师

"); 17 XCData data2 = new XCData("

道士

"); 18 19 //创建XML元素 20 XElement Sprites=new XElement("Sprites", 21 new XElement("Sprite", 22 new XElement("Profession", data1), 23 new XElement("Weapon", "魔杖")), 24 new XComment("用xml属性的方式创建xml元素"),//创建xml注释 25 new XElement("Sprite", 26 new XAttribute("Profession", "战士"),//创建xml属性 27 new XAttribute("Weapon", "屠龙刀")),//创建xml属性 28 new XElement("Sprite", 29 new XElement("Profession", data2), 30 new XElement("Weapon", "倚天剑"))); 31 32 //指定xml文档声明 33 xml.Declaration = declaration; 34 35 //添加xml文档类型 36 xml.Add(documenttype); 37 38 //添加xml处理指令 39 xml.Add(instruction); 40 41 //添加xml元素 42 xml.Add(Sprites); 43 44 //保存xml文档 45 xml.Save(@"d:\\Sprites.xml"); 46 }
iv.结果:
①所创建的xml文档内容:
Sprites.xml 1 2 3 4 5 6 法师

7 魔杖 8 9 10 11 12 道士

13 倚天剑 14 15
②用IE浏览Sprites.xml文档:
LINQ学习之旅——最后一站&quot;LTX&quot;之XML基本操作(上)最后一站
Tags:  最后一站下载 最后一站电影 最后一站剧情 最后一站豆瓣 最后一站

延伸阅读

最新评论

发表评论