XML基础

View Code
 1 class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5         //    XElement xPersons = new XElement("Persons");
 6         //    XElement xPerson1 = new XElement("Person");
 7         //    XElement xPerson2 = new XElement("Person");
 8         //    xPerson1.Value = "tom";//设置innertext
 9         //    xPerson1.SetAttributeValue("age", 30);//设置节点属性
10 
11         //    xPersons.SetAttributeValue("count",5);
12 
13         //    xPersons.Add(xPerson1);
14         //    xPersons.Add(xPerson2);
15 
16         //    string xml = xPersons.ToString();
17         //    Console.WriteLine(xml);
18 
19             //using(Stream stream = File.OpenRead(@"c:\1.xml"))
20             //{
21             //    using(StreamReader reader = new StreamReader(stream))
22             //    {
23             //        //用Reflector看到StreamReader是TextReader的子类
24             //        XDocument xdoc = XDocument.Load(reader);
25             //        //xdoc.Root //XDocument的Root属性表示根节点
26             //        string v1 = xdoc.Root.Attribute("v1").Value;//读取属性的值
27             //        Console.WriteLine(v1);
28             //        Console.WriteLine(xdoc.Root.Nodes().Count());
29             //        XNode node1 = xdoc.Root.Nodes().ElementAt(0);
30             //        XElement xP1 = node1 as XElement;
31             //        Console.WriteLine(xP1.Attribute("age").Value);
32 
33             //        //XElement root = xdoc.Root;
34             //        //XNode connectionStrings = root.Nodes().ElementAt(0);
35             //        //XElement xCS = (XElement)connectionStrings;
36             //        //xCS.Nodes();
37             //    }
38             //}
39 
40 
41             using (Stream stream = File.OpenRead(@"D:\我的文档\我的微盘\传智资料\班级资料\2011年2月28日班\课上代码\Sln0409\XML1\App.config"))
42             {
43                 using (StreamReader reader = new StreamReader(stream))
44                 {
45                     XDocument xdoc = XDocument.Load(reader);
46                     IEnumerable<XElement> connstrs 
47                         = xdoc.Root.Elements("connectionStrings");
48                     //获取根节点下名字为connectionStrings的元素
49                     if (connstrs.Count() == 1)
50                     {
51                         XElement xConnStrs = connstrs.ElementAt(0);
52                         foreach (XElement xConnStr 
53                             in xConnStrs.Elements("add"))
54                         {
55                             string name = xConnStr.Attribute("name").Value;
56                             string connstr = xConnStr.Attribute("connectionString").Value;
57                             Console.WriteLine("名字{0},字符串{1}", name, connstr);
58                         }
59                     }
60 
61                     //如果确定有且只有一个元素,可以用Element()、Elements()
62                     //xdoc.Element(
63                     //xdoc.Elements()//只返回元素
64                    // <!--fffff-->是注释(Comment),<connectionStrings>是元素(Element),他们都是节点(Node)。因为Nodes返回的即可能是注释,也可能是元素,所以只能返回Node类型。
65                     //foreach (XNode node in xdoc.Root.Nodes())
66                     //{
67 
68                     //}
69                 }
70             }
71             Console.ReadKey();
72         }
73     }
 
 
•XNode和XElement之间的关系:
 
<!--fffff-->是注释(Comment),<connectionStrings>是元素(Element),他们都是节点(Node)。
因为Nodes返回的即可能是注释,也可能是元素,所以只能返回Node类型,注释和元素都是Node类型。
•xdoc.Elements()//只返回元素
•xdoc.Nodes()返回所有节点(包括注释等。)
 
posted @ 2013-03-17 18:26  Big.Eagle  阅读(103)  评论(0)    收藏  举报