Linq读取XML
Linq To XML的核心类XElement,一个XElement表示一个节点,new XElement("Order"),创建一个名字为Order的标签,调用Add增加子节点,也是XElement 对象!
下面是几种LINQ操作XML的常见形式。
///写文件(生成节点性质的)
XElement ePersons = new XElement( "Persons" ); XElement ptom = new XElement( "Person" ); //增加一个Person节点 ptom.Add( new XElement( "Name" , "Tom" )); //在ptom下再增加子节点 ptom.Add( new XElement( "Age" , "18" )); ePersons.Add(ptom); |
XElement pjack = new XElement("Person");
pjack.Add(new XElement("Name", "Jack"));
pjack.Add(new XElement("Age", "20"));
ePersons.Add(pjack);
最终生成:
<?xml version="1.0" encoding="utf-8" ?>
<Persons>
<Person>
<Name>Tom</Name>
<Age>18</Age>
</Person>
<Person>
<Name>Jack</Name>
<Age>20</Age>
</Person>
</Persons>
///写文件(生成属性性质的)
XElement ptom = new XElement( "Person" ); ptom.Add( new XAttribute( "Name" , "tom" )); //添加XAttribute就生成属性 ptom.Add( new XAttribute( "Age" , "18" )); ePersons.Add(ptom); XElement pjack = new XElement( "Person" ); pjack.Add( new XAttribute( "Name" , "jack" )); pjack.Add( new XAttribute( "Age" , "20" )); ePersons.Add(pjack); |
最终生成:
<Persons>
<Person Name="tom" Age="18"/>
<Person Name="jack" Age="20"/>
</Persons>
//读XML 读取节点格式的值
XDocument xd= XDocument.Load( "XML文件地址" ); foreach (XElement item in xd.Root.Descendants( "Person" )) //得到每一个Person节点,得到这个节点再取他的Name的这个节点的值 { Console.WriteLine(item.Element( "Age" ).Value); //Person的节点的下得节点为Name的 } 注释:doc.root(得到根节点的XElement对象).XElement(“tagname”)方法得到的就是节点下第一个名字为tagname的节点。 如果doc.root。XElements(复数形式)就是得到所有的子节点,Descendants( "“tagname”" )子孙节点 |
//读XML 读取属性格式的值
XDocument xd= XDocument.Load( @"D:\Program Files\Demo\Demo\ConsoleApplication2\XMLFile2.xml" ); foreach (XElement item in xd.Root.Descendants( "Person" )) //得到每一个Person节点,得到这个节点再取他的Name的这个节点的值 { Console.WriteLine(item.Attribute( "Age" ).Value); //Person的节点的下得节点为Name的 } |