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()返回所有节点(包括注释等。)

浙公网安备 33010602011771号