zoukankan      html  css  js  c++  java
  • linq to xml操作XML

    对XML文件的操作在平时项目中经常要运用到,比如用于存放一些配置相关的内容;本文将简单运用Linq TO Xml对XML进行操作,主要讲解对XML的创建、加载、增加、查询、修改以及删除。

    1.生成xml文件

            public static void CreateXmlFile(string xmlPath)
            {
                try
                {
                    //定义一个XDocument结构
                    XDocument myXDoc = new XDocument(
                       new XElement("Users",
                           new XElement("User", new XAttribute("ID", "001"),
                               new XElement("name", "张三"),
                               new XElement("password", "1"),
                               new XElement("description", "张三是一个.NET开发工程师")
                               ),
                           new XElement("User", new XAttribute("ID", "002"),
                               new XElement("name", "李四"),
                               new XElement("password", "2"),
                               new XElement("description", "李四是一个Java开发工程师")
                               )
                          )
                   );
                    myXDoc.Save(xmlPath);
                }
                catch (Exception ex)
                {
                   
                }
            }

    生成的XML文件内容如下:

    <?xml version="1.0" encoding="utf-8"?>
    <Users>
      <User ID="001">
        <name>张三</name>
        <password>1</password>
        <description>张三是一个.NET开发工程师</description>
      </User>
      <User ID="002">
        <name>李四</name>
        <password>2</password>
        <description>李四是一个Java开发工程师</description>
      </User>
    </Users>

    2.修改xml文件的节点信息

      public static void ModifyXmlNode(string xmlPath)
            {
                try
                {
                    XElement rootNode = XElement.Load(xmlPath);
                    //查询语句: 获取ID属性值等于"001"的所有User节点
                    IEnumerable<XElement> targetNodes = from target in rootNode.Descendants("User")
                                                        where target.Attribute("ID").Value == "001"
                                                        select target;
                  
                    foreach (XElement node in targetNodes)
                    {
                        node.Element("description").SetValue("张三是一个测试工程师");
                    }
                    rootNode.Save(xmlPath);
                }
                catch (Exception ex)
                {
                   
                }
            }

    修改后的XML文件内容如下:

    <?xml version="1.0" encoding="utf-8"?>
    <Users>
      <User ID="001">
        <name>张三</name>
        <password>1</password>
        <description>张三是一个测试工程师</description>
      </User>
      <User ID="002">
        <name>李四</name>
        <password>2</password>
        <description>李四是一个Java开发工程师</description>
      </User>
    </Users>

    3.向xml文件添加节点信息

    3.1.末尾添加(Add)

      public static void AddXmlNodeLast(string xmlPath)
            {
                try
                {
                    XElement rootNode = XElement.Load(xmlPath);
                    //定义一个新节点
                    XElement newNode = new XElement("User", new XAttribute("ID", "009"),
                                                                new XElement("name", "小明"),
                                                                new XElement("password", "1"),
                                                                new XElement("description", "小明是一个产品经理"));
                    rootNode.Add(newNode);
                    rootNode.Save(xmlPath);
                }
                catch (Exception ex)
                {
                   
                }
            }

    添加后的XML文件内容如下:

    <?xml version="1.0" encoding="utf-8"?>
    <Users>
      <User ID="001">
        <name>张三</name>
        <password>1</password>
        <description>张三是一个测试工程师</description>
      </User>
      <User ID="002">
        <name>李四</name>
        <password>2</password>
        <description>李四是一个Java开发工程师</description>
      </User>
      <User ID="009">
        <name>小明</name>
        <password>1</password>
        <description>小明是一个产品经理</description>
      </User>
    </Users>

    3.2.指定位置增加节点(AddBeforeSelf:在 XNode 前面添加;AddAfterSelf:在 XNode 后面添加)

            public static void AddXmlNode(string xmlPath)
            {
                XElement rootNode = XElement.Load(xmlPath);
                var item = (from ele in rootNode.Elements("User")
                            where ele.Attribute("ID").Value.Equals("002")
                            select ele).SingleOrDefault();
                if (item != null)
                {
                    // 将此新节点添加到指定节点后
                    XElement newNode1 = new XElement("User", new XAttribute("ID", "003"),
                                                            new XElement("name", "小米"),
                                                            new XElement("password", "1"),
                                                            new XElement("description", "小米是一个逗逼"));
                    item.AddAfterSelf(newNode1);
    
                    // 将此新节点添加到指定节点前
                    XElement newNode2 = new XElement("User", new XAttribute("ID", "004"),
                                                           new XElement("name", "王五"),
                                                           new XElement("password", "1"),
                                                           new XElement("description", "王五是一个可爱的人"));
    
                    item.AddBeforeSelf(newNode2);
                    rootNode.Save(xmlPath);
                }
            }

    添加后的XML文件内容如下:

    <?xml version="1.0" encoding="utf-8"?>
    <Users>
      <User ID="001">
        <name>张三</name>
        <password>1</password>
        <description>张三是一个测试工程师</description>
      </User>
      <User ID="004">
        <name>王五</name>
        <password>1</password>
        <description>王五是一个可爱的人</description>
      </User>
      <User ID="002">
        <name>李四</name>
        <password>2</password>
        <description>李四是一个Java开发工程师</description>
      </User>
      <User ID="003">
        <name>小米</name>
        <password>1</password>
        <description>小米是一个逗逼</description>
      </User>
      <User ID="009">
        <name>小明</name>
        <password>1</password>
        <description>小明是一个产品经理</description>
      </User>
    </Users>

    4.删除指定xml文件的节点信息

     public static void DeleteXmlNode(string xmlPath)
            {
                try
                {
                    XElement rootNode = XElement.Load(xmlPath);
                    IEnumerable<XElement> targetNodes = from target in rootNode.Descendants("User")
                                                        where target.Attribute("ID").Value.Equals("004")
                                                        select target;
    
                    targetNodes.Remove();
                    rootNode.Save(xmlPath);
                }
                catch (Exception ex)
                {
                }
            }

    删除后的XML文件内容如下:

    <?xml version="1.0" encoding="utf-8"?>
    <Users>
      <User ID="001">
        <name>张三</name>
        <password>1</password>
        <description>张三是一个测试工程师</description>
      </User>
      <User ID="002">
        <name>李四</name>
        <password>2</password>
        <description>李四是一个Java开发工程师</description>
      </User>
      <User ID="003">
        <name>小米</name>
        <password>1</password>
        <description>小米是一个逗逼</description>
      </User>
      <User ID="009">
        <name>小明</name>
        <password>1</password>
        <description>小明是一个产品经理</description>
      </User>
    </Users>

     5.XML属性新增、修改和删除

    XElement rootNode = XElement.Load(xmlPath);
    IEnumerable<XElement> targetNodes = from target in rootNode.Descendants("User")
           where target.Attribute("ID").Value.Equals("004")
           select target;
    // 修改属性
    newNode.Add(new XAttribute("Sex", ""));
    // 修改属性
    newNode.SetAttributeValue("ID", "008");
    // 删除属性
    newNode.Attribute("Sex").Remove();
    rootNode.Save(xmlPath);
  • 相关阅读:
    条理清晰的搭建SSH环境之整合Hibernate和Spring
    条理清晰的搭建SSH环境之整合Struts和Spring
    条理清晰的搭建SSH环境之添加所需jar包
    日志工具的使用
    ajax上传文件
    input标签添加上disable属性在移动端字体颜色不兼容的解决办法。
    复制复制复制复制复制复制复制
    animate旋转动画练习,css3形变练习
    canvas练习单个矩形形变
    canvas刮刮卡
  • 原文地址:https://www.cnblogs.com/qianj/p/12687387.html
Copyright © 2011-2022 走看看