我们在创建一个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文档:
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文档:
延伸阅读
道士");
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文档:
延伸阅读
iv.结果:
①所创建的xml文档内容:
Sprites.xml 1 2 3 4
②用IE浏览Sprites.xml文档:
最新评论