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"); |
最终生成:
代码如下 | 复制代码 |
<?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 FilesDemoDemoConsoleApplication2XMLFile2.xml"); foreach (XElement item in xd.Root.Descendants("Person"))//得到每一个Person节点,得到这个节点再取他的Name的这个节点的值 { Console.WriteLine(item.Attribute("Age").Value);//Person的节点的下得节点为Name的 } |