• XML相关操作


    一、简单介绍

    using System.Xml;
    //初始化一个xml实例
    XmlDocument xml=new XmlDocument();

    //导入指定xml文件
    xml.Load(path);
    xml.Load(HttpContext.Current.Server.MapPath("~/file/bookstore.xml"));

    //指定一个节点
    XmlNode root=xml.SelectSingleNode("/root");

    //获取节点下所有直接子节点
    XmlNodeList childlist=root.ChildNodes;

    //判断该节点下是否有子节点
    root.HasChildNodes;

    //获取同名同级节点集合
    XmlNodeList nodelist=xml.SelectNodes("/Root/News");

    //生成一个新节点
    XmlElement node=xml.CreateElement("News");

    //将节点加到指定节点下,作为其子节点
    root.AppendChild(node);

    //将节点加到指定节点下某个子节点前
    root.InsertBefore(node,root.ChildeNodes[i]);

    //为指定节点的新建属性并赋值
    node.SetAttribute("id","11111");

    //为指定节点添加子节点
    root.AppendChild(node);

    //获取指定节点的指定属性值
    string id=node.Attributes["id"].Value;

    //获取指定节点中的文本
    string content=node.InnerText;

    //保存XML文件
    string path=Server.MapPath("~/file/bookstore.xml");
    xml.Save(path);
    //or use :xml.Save(HttpContext.Current.Server.MapPath("~/file/bookstore.xml"));

    二、具体实例

    新建xml文档 名字为userinfo.xml:

    内容:

    <UserInfo>
      <Persion id="001">
        <name>李鹏</name>
        <gender></gender>
      </Persion>
      <Persion id="002">
        <name>小明</name>
        <gender></gender>
      </Persion>
      <Persion id="003">
        <name>小花</name>
        <gender></gender>
      </Persion>
    </UserInfo>
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Xml;
    using System.IO;
    
    namespace WebApplication1
    {
        public partial class Test : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                string path;
                path = Server.MapPath("file/userinfo.xml");
                if (File.Exists(path))
                {
                    lblFile.Text = "文件存在";
                }
                //首先加载这个xml文档
                XmlDocument xml = new XmlDocument();
                xml.Load(path);
    
                #region   一:节点的加载
                //获取userinfo节点
                XmlNode node = xml.SelectSingleNode("UserInfo");
                //获取Persion节点集合
                XmlNodeList nodeList = xml.SelectNodes("/UserInfo/Persion");
    
    
                //获取Persion节点的属性为id的value
                foreach (XmlNode aN in nodeList)
                {
                    XmlElement axe = (XmlElement)aN;
                    //第一种方法
                    string str = axe.GetAttribute("id");
                    //第二种方法
                    string str1 = axe.Attributes["id"].Value;
    
                }
    
    
                //获取到第一个persion节点的子节点
                XmlNodeList nodeList2 = node.FirstChild.ChildNodes;
    
                foreach (XmlNode aN in nodeList2)
                {
                    XmlElement axe = (XmlElement)aN;
                    string biaoqian = axe.Name;
                    string value = axe.InnerXml;
    
                }
                #endregion
    
                #region   二:新XML文档的建立与节点操作(对data.xml操作)
                XmlDocument xmldoc = new XmlDocument();
                //加入XML的声明段落,<?xml version="1.0" encoding="gb2312"?>
                XmlDeclaration xmldecl;
                xmldecl = xmldoc.CreateXmlDeclaration("1.0", "utf-8", null);
                xmldoc.AppendChild(xmldecl);
    
                //加入一个根元素
                XmlElement xmlelem = xmldoc.CreateElement("", "User", "");
                xmldoc.AppendChild(xmlelem);
                //加入另外一个元素
    
    
                XmlNode root = xmldoc.SelectSingleNode("User");//查找<User>
                XmlElement xe1 = xmldoc.CreateElement("Persion");//创建一个<Node>节点
                xe1.SetAttribute("id", "001");//设置该节点id属性
    
                root.AppendChild(xe1);//将persion添加到<User>节点中
    
                XmlElement xesub1 = xmldoc.CreateElement("name");
                xesub1.InnerText = "李鹏";//设置文本节点
                xe1.AppendChild(xesub1);//添加到<Node>节点中
                XmlElement xesub2 = xmldoc.CreateElement("gender");
                xesub2.InnerText = "";
                xe1.AppendChild(xesub2);
                XmlElement xesub3 = xmldoc.CreateElement("age");
                xesub3.InnerText = "21";
                xe1.AppendChild(xesub3);
    
    
    
                //保存创建好的XML文档
                xmldoc.Save(Server.MapPath("~/file/data.xml"));
    
                #endregion
    
    
                #region     三:修改节点的值和删除一个节点(对userinfo.xml操作)
                XmlNodeList NDs = xml.SelectNodes("/UserInfo/Persion");
                foreach (XmlNode axn in NDs)
                {
    
                    XmlElement axe = (XmlElement)axn;
                    string str = axe.GetAttribute("id");
                    if (str == "002")
                    {
                        XmlElement axelm = xml.CreateElement("age");
                        axelm.InnerXml = "20";
    
                        axn.AppendChild(axelm);
                    }
                    if (str == "003")
                    {
                        //必须要用父节点移除子节点
                        node.RemoveChild(axe);
                    }
                }
                xml.Save(Server.MapPath("~/file/userinfo.xml"));
                #endregion
    
    
            }
        }
    }

     结果:

    <UserInfo>
      <Persion id="001">
        <name>李鹏</name>
        <gender></gender>
      </Persion>
      <Persion id="002">
        <name>小明</name>
        <gender></gender>
        <age>20</age>
      </Persion>
    </UserInfo>
  • 相关阅读:
    c++vector(入门级)
    端口扫描(TCP)
    推荐安全程序员的书单(系统、网络、安全等)
    My latest news(--2016.12.31)
    HTML+JS+DOM【选项卡自动切换】
    20170916考试总结
    [Usaco2014 Mar]Sabotage
    [SHOI2014]概率充电器
    [Usaco2010 Dec]Exercise 奶牛健美操
    [JZOJ4687]奇袭
  • 原文地址:https://www.cnblogs.com/lipeng0824/p/4392141.html
Copyright © 2020-2023  润新知