LINQ TO XML初步了解

最近简单的学习了一下LINT TO XML,写篇博客在这,方便以后查看~~

1、常用到的类

  XmlDocument --    文档(xml文件)
    XmlElement    --    元素(节点)
    XmlAttribute    --    属性(节点内容)
    XNamespace  --    命名空间(xmlns)
  XDeclaration --  创建XML文件的时候会默认生成 "1.0","UTF-8","yes"
 
2、创建xml文件(Save)
private static void Xml()
        {
            XDocument xml = new XDocument();//描述会自动创建  Encoding为UTF-8   XDeclaration dec=new XDeclaration("1.0","UTF-8","yes");
            XNamespace xmln = "SB-GAVIN-AA";//添加xml命名空间,xmlns
            XNamespace xm = "GAVIN-AA";
            XElement eleHead = new XElement(xmln + "Head");//创建节点,并声明该节点的命名空间为xmln
            XElement eleDetail = new XElement("name");//创建节点,若前面有声明过命名空间,不会默认继承,会添加 xmlns = ""
            XElement ele = new XElement(xm + "column");//创建节点,每个节点的命名空间可以不同
            XAttribute appearance = new XAttribute("appearance", "nice"); //创建属性
            XAttribute name = new XAttribute("name", "Hao"); //创建属性
            xml.Add(eleHead); //添加根节点
            eleHead.Add(eleDetail); //添加子节点
            eleDetail.Add(ele); //添加子节点
            eleDetail.Add(appearance); //子节点添加属性
            xml.Save("3.xml"); //保存文件,保存路径在Debug目录下
        }

 

<?xml version="1.0" encoding="utf-8"?>
<Head xmlns="SB-GAVIN-AA">
  <name appearance="nice" xmlns="">
    <column xmlns="GAVIN-AA" />
  </name>
</Head>
 
3、XML的读取
private static void LoadXml()
        {
            XDocument xdoc = XDocument.Load(@"..\Debug\xml\3.xml");//.. -------> .....\bin\
            List<XElement> ele = new List<XElement>();
            string Apprearance = "nice";

            XNamespace xmln = "SB-GAVIN-AA";
            XNamespace xm = "GAVIN-AA";
            XElement e = xdoc.Element(xmln + "Head");//元素含有xmlns时,添加XNamespace来定位节点。没有xmlns则不用添加XNamespace
            foreach (XElement item in e.Elements())
            {
                //判断这个元素的名字是不是name,如果是name,看内容是不是nameTxt
                if (item.Name.LocalName == "name")
                {
                    if (item.Attribute("appearance").Value == Apprearance)
                    {
                        //符合条件的节点,取其父级
                        ele.Add(item.Parent);
                    }
                }
            }
            foreach (XElement item in ele)
            {
                Console.WriteLine("appearance:{0}", item.Element("name").Attribute("appearance").Value);    //输出结果:appearance:nice
            }
            Console.ReadKey();
        }

 

4、XML节点的删改

(删)原xml文件:

<?xml version="1.0" encoding="utf-8"?>
<Head>
  <name appearance="nice">
    <column name="Hao" />
  </name>
  <column />
</Head>
private static void RemoveXml()
        {
            XDocument xdoc = XDocument.Load(@"..\Debug\xml\4.xml");
            XElement e = xdoc.Element("Head");//定位节点Head

            foreach (XElement xxElement in e.Elements())
            {
                if (xxElement.Name.LocalName == "column")
                {
                    xxElement.Remove();//删除根节点Head里的子节点column
                    xdoc.Save(@"..\Debug\xml\4.xml");//保存修改
                }
            }
            Console.ReadKey();
        }
    }

删减后:

<?xml version="1.0" encoding="utf-8"?>
<Head>
  <name appearance="nice">
    <column name="Hao" />
  </name>
</Head>

 

(改)

private static void updateXml()
        {
            XDocument xdoc = XDocument.Load(@"..\Debug\xml\4.xml");
            XElement e = xdoc.Element("Head");
            string att = "supnice";
            string name = "Hao";
            foreach (XElement xxElement in e.Elements())
            {
                if (xxElement.Name.LocalName == "name")
                {
                    xxElement.Name = name;//修改节点名字
                    xxElement.Attribute("appearance").Value = att;//修改appearance的属性为supnice
                    xdoc.Save(@"..\Debug\xml\4.xml");//保存修改
                }
            }
        }

 

posted @ 2017-04-24 10:41  小白一枚丶  Views(376)  Comments(0)    收藏  举报