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>
时间: 2024-11-10 22:24:25

XML相关操作的相关文章

C# XML相关操作

XML是一种意见单文本格式存储数据的方式,这意味着它可以被任何计算机读取.XML中完整的数据集就是XML文档. 在名称空间System.Xml下面大部分类型都是用来支持DOM处理模型的.其中很多类型配合起来共同组织成XMLDOM,XMLDOM是一种很典型的文档对象模型的应用.文档对象模型是一种比较高级的软件设计模式,我会在今后的课程中详细介绍文档对象模型这种软件设计模式. 类名 说明 XmlNode 这个类表示文档的一个节点,它是许多类的基类.如果这个节点表示XML文档的根,就可以从它导航文档任

SqlServer XML数据类型DML相关操作(图文结合)

XML操作很少用到,最近查询个语句,还得到官网查看用法.所以按照官方把相关的DML都操作一遍,作为记录!~ -- 测试数据 -- DROP TABLE #XMLTab CREATE TABLE #XMLTab(colxml XML) GO INSERT INTO #XMLTab SELECT N' <Record dt="2015-05-05"> <Exception type="RING_BUFFER_EXCEPTION"> <Tas

java 使用xom对象数据序列化为xml、反序列化、Preferences相关操作小案例

package org.rui.io.xml; import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.util.Arrays; import java.util.List; import nu.xom.Document; import nu.

VS之XML文件操作

XML,可扩展的标识语言(eXtensible Markup Language),具有多种优势,所以现在被广泛使用,本文通过一个简单的例子来实现对XML文件的保存和读取操作. 使用工具:VS2008 使用语言:C++ 开发步骤: 1.新建对话框程序 2.添加XML相关类 该类摘自网络 Markup.h // Markup.h: interface for the CMarkup class. // // Markup Release 8.2 // Copyright (C) 1999-2006

sql相关操作

1.两个不同数据库对应字段相应操作 //操作模版:insert into data2.table2(字段1,字段2,字段) select 字段j,字段k,字段m from data1.table1举例:insert into Hospitals.dbo.Deparments(DepartmentName) select distinct(Departments)from NanFan.dbo.UserInfo where Unit='南方医院'//更新update Hospitals.dbo.U

JqGrid相关操作备忘 方法列表

JqGrid相关操作备忘 方法列表 1.获得当前列表行数:$("#gridid").getGridParam("reccount"); 2.获取选中行数据(json):$("#gridid").jqGrid('getRowData', id); 3.刷新列表:$(refreshSelector).jqGrid('setGridParam', { url: ''), postData: ''}).trigger('reloadGrid'); 4.选

关于C#资源文件的相关操作

关于资源文件的相关操作. //1.比较常见的有获取资源文件对应的文件流,然后转换到相对应的文件 //比较典型的做法是通过代码程序集加载指定资源 //如下通过Assembly的静态方法GetExecutingAssembly()得到程序集 //还有很多方式可以得到代码程序集 System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly(); Stream manifestResourceStream

DateTimeHelper【日期类型与字符串互转以及日期对比相关操作】

版权声明:本文为博主原创文章,未经博主允许不得转载. 前言 实现日期和字符串之间的转换以及日期的相关操作: 1.日期格式的字符串输出为Date类型: 2.将Date类型以指定格式输出: 3.将日期格式的字符串以指定格式输出: 4.将时间戳转化为固定格式的日期字符串 : 5.将时间戳转化为指定格式日期的字符串: 6.当前时间提前一个月: 7.当前时间延后一个月: ...... 效果图 暂不需要 代码分析 注意:new SimpleDateFormat的构造函数中必须含有Locale.CHINA或者

SQL SERVER中对XML进行操作

一.前言 SQL Server 2005 引入了一种称为 XML 的本机数据类型.用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列:此外,还允许带有变量和参数.为了更好地支持 XML 模型特征(例如文档顺序和递归结构),XML 值以内部格式存储为大型二进制对象 (BLOB). 用户将一个XML数据存入数据库的时候,可以使用这个XML的字符串,SQL Server会自动的将这个字符串转化为XML类型,并存储到数据库中. 随着SQL Server 对XML字段的支持,相应的,T-