C#操作xml

C#操作XML之写入XML C#操作XML有两种方式,一、通过XmlDocument 阅读详情

在C#.net中如何操作XML
需要添加的命名空间:
using System.Xml;

定义几个公共对象:
XmlDocument xmldoc ;
XmlNode xmlnode ;
XmlElement xmlelem ;

1,创建到服务器同名目录下的xml文件:


方法一:
xmldoc = new XmlDocument ( ) ;
//加入XML的声明段落
xmlnode = xmldoc.CreateNode ( XmlNodeType.XmlDeclaration , "" , "" ) ;
xmldoc.AppendChild ( xmlnode ) ;
//加入一个根元素
xmlelem = xmldoc.CreateElement ( "" , "Employees" , "" ) ;
xmldoc.AppendChild ( xmlelem ) ;
//加入另外一个元素
for(int i=1;i<3;i++)
...{

XmlNode root=xmldoc.SelectSingleNode("Employees");//查找<Employees>
XmlElement xe1=xmldoc.CreateElement("Node");//创建一个<Node>节点
xe1.SetAttribute("genre","李赞红");//设置该节点genre属性
xe1.SetAttribute("ISBN","2-3631-4");//设置该节点ISBN属性

XmlElement xesub1=xmldoc.CreateElement("title");
xesub1.InnerText="CS从入门到精通";//设置文本节点
xe1.AppendChild(xesub1);//添加到<Node>节点中
XmlElement xesub2=xmldoc.CreateElement("author");
xesub2.InnerText="候捷";
xe1.AppendChild(xesub2);
XmlElement xesub3=xmldoc.CreateElement("price");
xesub3.InnerText="58.3";
xe1.AppendChild(xesub3);

root.AppendChild(xe1);//添加到<Employees>节点中
}
//保存创建好的XML文档
xmldoc.Save ( Server.MapPath("data.xml") ) ;

/**///////////////////////////////////////////////////////////////////////////////////////
结果:在同名目录下生成了名为data.xml的文件,内容如下,
<?xml version="1.0"?>
<Employees>
<Node genre="李赞红" ISBN="2-3631-4">
  <title>CS从入门到精通</title>
  <author>候捷</author>
  <price>58.3</price>
</Node>
<Node genre="李赞红" ISBN="2-3631-4">
  <title>CS从入门到精通</title>
  <author>候捷</author>
  <price>58.3</price>
</Node>
</Employees>


方法二:
XmlTextWriter xmlWriter;
  string strFilename = Server.MapPath("data1.xml") ;

  xmlWriter = new XmlTextWriter(strFilename,Encoding.Default);//创建一个xml文档
  xmlWriter.Formatting = Formatting.Indented;
  xmlWriter.WriteStartDocument();
  xmlWriter.WriteStartElement("Employees");

  xmlWriter.WriteStartElement("Node");
  xmlWriter.WriteAttributeString("genre","李赞红");
  xmlWriter.WriteAttributeString("ISBN","2-3631-4");

  xmlWriter.WriteStartElement("title");
  xmlWriter.WriteString("CS从入门到精通");
  xmlWriter.WriteEndElement();

  xmlWriter.WriteStartElement("author");
  xmlWriter.WriteString("候捷");
  xmlWriter.WriteEndElement();

  xmlWriter.WriteStartElement("price");
  xmlWriter.WriteString("58.3");
  xmlWriter.WriteEndElement();

  xmlWriter.WriteEndElement();

  xmlWriter.Close();
/**///////////////////////////////////////////////////////////////////////////////////////
结果:
<?xml version="1.0" encoding="gb2312"?>
<Employees>
<Node genre="李赞红" ISBN="2-3631-4">
  <title>CS从入门到精通</title>
  <author>候捷</author>
  <price>58.3</price>
</Node>
</Employees>

2,添加一个结点:

XmlDocument xmlDoc=new XmlDocument();
xmlDoc.Load(Server.MapPath("data.xml"));
XmlNode root=xmlDoc.SelectSingleNode("Employees");//查找<Employees>
XmlElement xe1=xmlDoc.CreateElement("Node");//创建一个<Node>节点
xe1.SetAttribute("genre","张三");//设置该节点genre属性
xe1.SetAttribute("ISBN","1-1111-1");//设置该节点ISBN属性

XmlElement xesub1=xmlDoc.CreateElement("title");
xesub1.InnerText="C#入门帮助";//设置文本节点
xe1.AppendChild(xesub1);//添加到<Node>节点中
XmlElement xesub2=xmlDoc.CreateElement("author");
xesub2.InnerText="高手";
xe1.AppendChild(xesub2);
XmlElement xesub3=xmlDoc.CreateElement("price");
xesub3.InnerText="158.3";
xe1.AppendChild(xesub3);

root.AppendChild(xe1);//添加到<Employees>节点中
xmlDoc.Save ( Server.MapPath("data.xml") );

/**///////////////////////////////////////////////////////////////////////////////////////
结果:在xml原有的内容里添加了一个结点,内容如下,
<?xml version="1.0"?>
<Employees>
<Node genre="李赞红" ISBN="2-3631-4">
  <title>CS从入门到精通</title>
  <author>候捷</author>
  <price>58.3</price>
</Node>
<Node genre="李赞红" ISBN="2-3631-4">
  <title>CS从入门到精通</title>
  <author>候捷</author>
  <price>58.3</price>
</Node>
<Node genre="张三" ISBN="1-1111-1">
  <title>C#入门帮助</title>
  <author>高手</author>
  <price>158.3</price>
</Node>
</Employees>

3,修改结点的值(属性和子结点):

XmlDocument xmlDoc=new XmlDocument();
xmlDoc.Load( Server.MapPath("data.xml") );

XmlNodeList nodeList=xmlDoc.SelectSingleNode("Employees").ChildNodes;//获取Employees节点的所有子节点

foreach(XmlNode xn in nodeList)//遍历所有子节点
...{
XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型
if(xe.GetAttribute("genre")=="张三")//如果genre属性值为“张三”
...{
xe.SetAttribute("genre","update张三");//则修改该属性为“update张三”

XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点
foreach(XmlNode xn1 in nls)//遍历
...{
XmlElement xe2=(XmlElement)xn1;//转换类型
if(xe2.Name=="author")//如果找到
...{
xe2.InnerText="亚胜";//则修改
}
}
}
}
xmlDoc.Save( Server.MapPath("data.xml") );//保存。

/**///////////////////////////////////////////////////////////////////////////////////////
结果:将原来的所有结点的信息都修改了,xml的内容如下,
<?xml version="1.0"?>
<Employees>
<Node genre="李赞红" ISBN="2-3631-4">
  <title>CS从入门到精通</title>
  <author>候捷</author>
  <price>58.3</price>
</Node>
<Node genre="李赞红" ISBN="2-3631-4">
  <title>CS从入门到精通</title>
  <author>候捷</author>
  <price>58.3</price>
</Node>
<Node genre="update张三" ISBN="1-1111-1">
  <title>C#入门帮助</title>
  <author>亚胜</author>
  <price>158.3</price>
</Node>
</Employees>

4,修改结点(添加结点的属性和添加结点的自结点):
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.Load( Server.MapPath("data.xml") );

XmlNodeList nodeList=xmlDoc.SelectSingleNode("Employees").ChildNodes;//获取Employees节点的所有子节点

foreach(XmlNode xn in nodeList)
...{
XmlElement xe=(XmlElement)xn;
xe.SetAttribute("test","111111");

XmlElement xesub=xmlDoc.CreateElement("flag");
xesub.InnerText="1";
xe.AppendChild(xesub);
}
xmlDoc.Save( Server.MapPath("data.xml") );

/**///////////////////////////////////////////////////////////////////////////////////////
结果:每个结点的属性都添加了一个,子结点也添加了一个,内容如下,
<?xml version="1.0"?>
<Employees>
<Node genre="李赞红" ISBN="2-3631-4" test="111111">
  <title>CS从入门到精通</title>
  <author>候捷</author>
  <price>58.3</price>
  <flag>1</flag>
</Node>
<Node genre="李赞红" ISBN="2-3631-4" test="111111">
  <title>CS从入门到精通</title>
  <author>候捷</author>
  <price>58.3</price>
  <flag>1</flag>
</Node>
<Node genre="update张三" ISBN="1-1111-1" test="111111">
  <title>C#入门帮助</title>
  <author>亚胜</author>
  <price>158.3</price>
  <flag>1</flag>
</Node>
</Employees>

5,删除结点中的某一个属性:
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.Load( Server.MapPath("data.xml") );
XmlNodeList xnl=xmlDoc.SelectSingleNode("Employees").ChildNodes;
foreach(XmlNode xn in xnl)
...{
XmlElement xe=(XmlElement)xn;
xe.RemoveAttribute("genre");//删除genre属性

XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点
foreach(XmlNode xn1 in nls)//遍历
...{
XmlElement xe2=(XmlElement)xn1;//转换类型
if(xe2.Name=="flag")//如果找到
...{
xe.RemoveChild(xe2);//则删除
}
}
}
xmlDoc.Save( Server.MapPath("data.xml") );

/**///////////////////////////////////////////////////////////////////////////////////////]
结果:删除了结点的一个属性和结点的一个子结点,内容如下,
<?xml version="1.0"?>
<Employees>
<Node ISBN="2-3631-4" test="111111">
  <title>CS从入门到精通</title>
  <author>候捷</author>
  <price>58.3</price>
</Node>
<Node ISBN="2-3631-4" test="111111">
  <title>CS从入门到精通</title>
  <author>候捷</author>
  <price>58.3</price>
</Node>
<Node ISBN="1-1111-1" test="111111">
  <title>C#入门帮助</title>
  <author>亚胜</author>
  <price>158.3</price>
</Node>
</Employees>

6,删除结点:
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.Load( Server.MapPath("data.xml") );
XmlNode root=xmlDoc.SelectSingleNode("Employees");
XmlNodeList xnl=xmlDoc.SelectSingleNode("Employees").ChildNodes;
for(int i=0;i<xnl.Count;i++)
...{
XmlElement xe=(XmlElement)xnl.Item(i);
if(xe.GetAttribute("genre")=="张三")
...{
root.RemoveChild(xe);
if(i<xnl.Count)i=i-1;
}
}
xmlDoc.Save( Server.MapPath("data.xml") );

/**///////////////////////////////////////////////////////////////////////////////////////]
结果:删除了符合条件的所有结点,原来的内容:

<?xml version="1.0"?>
<Employees>
<Node genre="李赞红" ISBN="2-3631-4">
  <title>CS从入门到精通</title>
  <author>候捷</author>
  <price>58.3</price>
</Node>
<Node genre="李赞红" ISBN="2-3631-4">
  <title>CS从入门到精通</title>
  <author>候捷</author>
  <price>58.3</price>
</Node>
<Node genre="张三" ISBN="1-1111-1">
  <title>C#入门帮助</title>
  <author>高手</author>
  <price>158.3</price>
</Node>
<Node genre="张三" ISBN="1-1111-1">
  <title>C#入门帮助</title>
  <author>高手</author>
  <price>158.3</price>
</Node>
</Employees>

删除后的内容:
<?xml version="1.0"?>
<Employees>
<Node genre="李赞红" ISBN="2-3631-4">
  <title>CS从入门到精通</title>
  <author>候捷</author>
  <price>58.3</price>
</Node>
<Node genre="李赞红" ISBN="2-3631-4">
  <title>CS从入门到精通</title>
  <author>候捷</author>
  <price>58.3</price>
</Node>
</Employees>

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/xfworld/archive/2006/12/21/1451951.aspx

C#操作XML完整示例与实战指南 XML(Extensible Markup Language)即可扩展标记语言,是一种用于存储和传输数据的标记语言。它在20世纪90年代末被开发出来,其设计宗旨是传输和存储数据,而非显示数据。与HTML不同,XML不预定义标签,而是允许开发者定义自己的标签,这使得XML非常灵活,并且能够适应不同的数据表示需求。System.Xml命名空间提供了许多用于处理XML的类,使得开发人员可以轻松地在.NET应用程序中创建、操作和读取XML数据。 阅读详情

相关推荐

C# WinForm与XML操作全解析

System.Xml命名空间提供了用于处理XML文档的类和接口。以下是该命名空间中一些最常用和最重要的类的概览。XML Schema是用来描述XML文档结构的一种机制。与DTD相比,它提供了更加丰富的数据类型和更强的约束验证能力。在C#中,可以使用XmlSchema类来定义和应用XML Schema。下面的代码展示了如何定义一个简单的XML Schema,并在创建XML文档时应用这个Schema进行验证:Items = {});// 这里是第一个验证点。

weixin_36073714的博客 1170

在C#.net中如何操作XML

在C#.net中如何操作XML需要添加的命名空间:using System.Xml;定义几个公共对象:XmlDocument xmldoc ;XmlNode xmlnode ;XmlElement xmlelem ;1,创建到服务器同名目录下的xml文件:方法一:xmldoc = new XmlDocument ( ) ;//加入XML的声明段落xmlnode = xmldoc.Cre

deng0320的专栏 582

wince下的C#读取xml文件

wince下的C#读取xml文件,wince智能项目不支持相对路径,所以没有Setting.setting配置文件,所以需要读写xml,下载文件中有详细说明

c语言多xml文件操作,c语言 C#中对XML文件的操作.doc

c语言 C#中对XML文件的操作导读:就爱阅读网友为您分享以下“C#中对XML文件的操作”的资讯,希望对您有所帮助,感谢您对92的支持!swith(objNodeType){case XmlNodeType.XmlDeclaration://读取XML文件头strNodeResult+="XMLDeclaration:"+objXMLReader.Name+""+objXMLReader.Valu...

weixin_39528697的博客 142

wince下xml文件操作(c#)

程序是在网上搜索,然后测试,整理的,包含了xml文件的读写,修改,删除操作。需要注意的是,在wince下,不支持文件的相对路径。

wince操作xml小例子(C#)

wince操作xml,包括 //读取xml文档的内容并保存到DataSet中,WINCE端数据导出也就是由数据库数据生成XML,读取XML文件内容

C# 处理xml

今天下午闲来无事,看来一下C#是怎么处理xml的。看起来还是蛮简单的,随手写了几行代码。 我是用了XmlDocument   创建xml 基本上,可以一步一步来构建一个xml文件,如下: XmlDocument doc = new XmlDocument(); bool bExists = true; try {

zj510的专栏 1085

Wince下的XML读写操作

代码详细表达了再Wince操作系统或其他智能设备下,用MFC对XML配置文件的读写操作,使用的是msxml4.dll库. 本代码有助于需要在智能设备下开发,保存配置文件的程序猿们.

【C#】C#操作XML

C#进行XML文件的读取与写入

qwerty_funny的博客 3608

C# wince xml读写

C# 在wince环境下操作xml,对其进行读取和修改写入操作

CZT与FFT频谱分析方法对比:从任意频带重采样到高精度频谱分析

M = 85 % 输出点数f0 = 70 Hz % 起始频率DELF = 0.4 Hz % 频率步长频率分辨率提高到0.4 Hz分析带宽聚焦在[70, 103.6]Hz更清晰地分辨出78Hz和82Hz的频率分量。

2403_88098319的博客 1860

c# XML的各种操作

c# XML的各种操作

weixin_43931979的博客 1065

开源数显表

开源数显表,广泛应用于车床、铣床、磨床、镗床、火花机、线切割等。市面上此类液晶数显表多数都是基于此项目。 一、基本配置 硬件 主控:STM32F407VGT6 LCD:群创AT070TN92 显示驱动:RA8875 光栅尺:3 x 输入(X/Y/Z) 串口:1 x MAX3232 继电器:2 x 输出 存储:AT24C64 模拟输入:LM324C 电源:AC 220V 软件 工程版本:Keil 5 STM32库:V1.4.0 图形界面:uCGUI 多语言支持:中文、英文 二、项目文

m0_70934529的博客 435

C#操作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.Selec

祈离的专栏 9万+

解码运动想象:BCI Competition IV 2a数据集实战指南

本文提供了BCI Competition IV 2a数据集的实战指南,详细解析了该经典运动想象脑电数据集的结构、文件格式与实验范式。通过MNE-Python等工具,逐步演示了从原始信号读取、预处理(通道选择、滤波、分段)到特征提取(CSP、频带功率)和模型训练(LDA、SVM)的完整流程,并强调了受试者独立评估的重要性,为BCI研究者提供了可复现的入门与进阶路径。

weixin_29304985的博客 362

STM32CUBEMX 使用教程5 — DMA配置 & 串口结合DMA实现数据搬运

DMA(Direct Memory Access),直接存储器访问(或数据搬运),是STM32中很实用的一个外设。DMA 传输数据方式不需要 CPU 参与控制传输,也不用中断处理的方式进行数据搬运处理,纯粹通过硬件为 RAM 与 I/O 设备之间开辟一条直接传送数据的通路,使 CPU 的效率大大提高。

weixin_43866583的博客 1500

C#之XML操作

DEMO1 XML文档 <skills> <skill> <id>2</id> <name lang="cn">天下无双</name> <damage>123</damage> </skill> <skill> <id>3...

Csoap2的博客 445

【24E】SWT6652 wifi驱动加载失败问题分析及解决方案

修改驱动配置Kconfig。是由于内存分配失败导致。

wgl307293845的博客 219

C#操作XML文件

在C#中XML还是常见的,而且操作简易,往往用以储存简单数据。XMl结构跟树结构类似,层层相关,利用索引找到对应节点进行增删改操作,修改访问操作也是简单上手,赶紧去尝试吧。

weixin_42314624的博客 3332

Android Audio录音——AudioRecord回声消除(九)

在语音通话或录音场景中,回声(Acoustic Echo)通常是指说话的声音从对方的扬声器播放出来,又被对方的麦克风拾取,然后有被传回来,导致我们听到了自己延迟了一段时间的重复声音。

小旭的专栏 1404

Auto.js实现视频号点赞自动化

摘要:本文介绍了一个微信视频号自动化点赞的实现方案。通过定位点赞图标和数量容器,点击点赞按钮后检测点赞数变化,若发现取消点赞则自动补点。核心代码包括:1)获取点赞容器和图标;2)记录点赞前后数量;3)判断是否误取消并补点;4)循环执行点赞和滑动页面操作。该方案解决了滑动页面可能导致误取消点赞的问题,实现了自动化批量点赞功能。文章强调仅供学习参考,提醒勿滥用该技术。

分享前端工程化、AI 应用、Agent 开发与大模型实践! 2575

在C#中操作XML

在C#中操作XML 我用的是一种很笨的方法,但可以帮助初学者了解访问XML节点的过程。 已知有一个XML文件(bookstore.xml)如下:      Oberons Legacy    Corets, Eva    5.95   1、往节点中插入一个节点:   XmlDocument xmlDoc=new XmlDocument();   xmlDoc.Lo

zr1982930的专栏 1065

Codex 接入国产大模型指南:客户端与 CLI 双端实战

CC Switch是目前最流行的 Codex / Claude Code 模型切换工具,内置了协议转换功能,支持几乎所有主流国产模型。核心原理Codex → 本地 8317 端口(CC Switch)→ 协议转换 → 国产模型 API整个过程对 Codex 完全透明,Codex 以为自己在跟标准的 Responses API 对话。用户类型推荐方案理由新手 / 不想折腾配置简单,免费额度够用追求稳定体验通义千问(原生接入)官方兼容,功能最完整企业用户自建 AI 网关可控性强,支持多用户管理预算有限。

篮球界最会写bug的人;程序猿中打球最菜的人。 576

C# 操作XML

C#操作XML小结_转载   2009-10-03 11:30:33|  分类: LearningABC |  标签: |字号大中小 订阅 一、简单介绍 usin

jinxiuxiang的专栏 329

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

下一篇: SQLCE数据库的使用
Elecsoft
博客等级 码龄17年 32粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值