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>

 

posted @ 2015-04-04 14:24  李_鹏  阅读(135)  评论(0编辑  收藏  举报