- 浏览: 17352 次
- 性别:
- 来自: 江西
-
最新评论
一、简单介绍
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"));
二、具体实例
在C#.net中如何操作XML
需要添加的命名空间:
using System.Xml;
定义几个公共对象:
XmlDocument xmldoc ;
XmlNode xmlnode ;
XmlElement xmlelem ;
1,创建到服务器同名目录下的xml文件:
//加入一个根元素 XmlNode root=xmldoc.SelectSingleNode("Employees");//查找<Employees> XmlElement xesub1=xmldoc.CreateElement("title"); root.AppendChild(xe1);//添加到<Employees>节点中 ////////////////////////////////////////////////////////////////////////////////////// xmlWriter = new XmlTextWriter(strFilename,Encoding.Default);//创建一个xml文档 xmlWriter.WriteStartElement("Node"); xmlWriter.WriteStartElement("title"); xmlWriter.WriteStartElement("author"); xmlWriter.WriteStartElement("price"); xmlWriter.WriteEndElement(); xmlWriter.Close(); 2,添加一个结点: XmlDocument xmlDoc=new XmlDocument(); XmlElement xesub1=xmlDoc.CreateElement("title"); root.AppendChild(xe1);//添加到<Employees>节点中 ////////////////////////////////////////////////////////////////////////////////////// 3,修改结点的值(属性和子结点): XmlDocument xmlDoc=new XmlDocument(); XmlNodeList nodeList=xmlDoc.SelectSingleNode("Employees").ChildNodes;//获取Employees节点的所有子节点 foreach(XmlNode xn in nodeList)//遍历所有子节点 XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点 ////////////////////////////////////////////////////////////////////////////////////// 4,修改结点(添加结点的属性和添加结点的自结点): XmlNodeList nodeList=xmlDoc.SelectSingleNode("Employees").ChildNodes;//获取Employees节点的所有子节点 foreach(XmlNode xn in nodeList) XmlElement xesub=xmlDoc.CreateElement("flag"); ////////////////////////////////////////////////////////////////////////////////////// 5,删除结点中的某一个属性: XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点 //////////////////////////////////////////////////////////////////////////////////////] 6,删除结点: //////////////////////////////////////////////////////////////////////////////////////] <?xml version="1.0" encoding="gb2312"?> 删除后的内容: 7,按照文本文件读取xml System.IO.StreamReader myFile =new string myString = myFile.ReadToEnd();//myString是读出的字符串 /*读取xml数据 两种xml方式*/ /*第一种方法*/
方法一:
xmldoc = new XmlDocument ( ) ;
//加入XML的声明段落,<?xml version="1.0" encoding="gb2312"?>
XmlDeclaration xmldecl;
xmldecl = xmldoc.CreateXmlDeclaration("1.0","gb2312",null);
xmldoc.AppendChild ( xmldecl);
xmlelem = xmldoc.CreateElement ( "" , "Employees" , "" ) ;
xmldoc.AppendChild ( xmlelem ) ;
//加入另外一个元素
for(int i=1;i<3;i++)
{
XmlElement xe1=xmldoc.CreateElement("Node");//创建一个<Node>节点
xe1.SetAttribute("genre","李赞红");//设置该节点genre属性
xe1.SetAttribute("ISBN","2-3631-4");//设置该节点ISBN属性
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);
}
//保存创建好的XML文档
xmldoc.Save ( Server.MapPath("data.xml") ) ;
结果:在同名目录下生成了名为data.xml的文件,内容如下,
<?xml version="1.0" encoding="gb2312"?>
<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.Formatting = Formatting.Indented;
xmlWriter.WriteStartDocument();
xmlWriter.WriteStartElement("Employees");
xmlWriter.WriteAttributeString("genre","李赞红");
xmlWriter.WriteAttributeString("ISBN","2-3631-4");
xmlWriter.WriteString("CS从入门到精通");
xmlWriter.WriteEndElement();
xmlWriter.WriteString("候捷");
xmlWriter.WriteEndElement();
xmlWriter.WriteString("58.3");
xmlWriter.WriteEndElement();
//////////////////////////////////////////////////////////////////////////////////////
结果:
<?xml version="1.0" encoding="gb2312"?>
<Employees>
<Node genre="李赞红" ISBN="2-3631-4">
<title>CS从入门到精通</title>
<author>候捷</author>
<price>58.3</price>
</Node>
</Employees>
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属性
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);
xmlDoc.Save ( Server.MapPath("data.xml") );
结果:在xml原有的内容里添加了一个结点,内容如下,
<?xml version="1.0" encoding="gb2312"?>
<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>
xmlDoc.Load( Server.MapPath("data.xml") );
{
XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型
if(xe.GetAttribute("genre")=="张三")//如果genre属性值为“张三”
{
xe.SetAttribute("genre","update张三");//则修改该属性为“update张三”
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" encoding="gb2312"?>
<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>
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.Load( Server.MapPath("data.xml") );
{
XmlElement xe=(XmlElement)xn;
xe.SetAttribute("test","111111");
xesub.InnerText="1";
xe.AppendChild(xesub);
}
xmlDoc.Save( Server.MapPath("data.xml") );
结果:每个结点的属性都添加了一个,子结点也添加了一个,内容如下,
<?xml version="1.0" encoding="gb2312"?>
<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>
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属性
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" encoding="gb2312"?>
<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>
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") );
结果:删除了符合条件的所有结点,原来的内容:
<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" encoding="gb2312"?>
<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>
System.IO.StreamReader(Server.MapPath("data.xml"),System.Text.Encoding.Default);
//注意System.Text.Encoding.Default
myFile.Close();
三、高级应用
<aaa>
<bb>something</bb>
<cc>something</cc>
</aaa>
<aaa>
<add key="123" value="321"/>
</aaa>
DS.ReadXml("your xmlfile name");
Container.DataItem("bb");
Container.DataItem("cc");
DS.ReadXmlSchema("your xmlfile name");
/*第二种方法*/
<aaa>
<add key="123" value="321"/>
</aaa>
如果我要找到123然后取到321应该怎么写呢?
using System.XML;
XmlDataDocument xmlDoc = new System.Xml.XmlDataDocument();
xmlDoc.Load(@"c:\Config.xml");
XmlElement elem = xmlDoc.GetElementById("add");
string str = elem.Attributes["value"].Value
/*第三种方法: SelectSingleNode 读取两种格式的xml *---/
--------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<ConnectionString>Data Source=yf; user id=ctm_dbo;password=123</ConnectionString>
</appSettings>
</configuration>
--------------------------------------------------------------------------
XmlDocument doc = new XmlDocument();
doc.Load(strXmlName);
XmlNode node=doc.SelectSingleNode("/configuration/appSettings/ConnectionString");
if(node!=null)
{
string k1=node.Value; //null
string k2=node.InnerText;//Data Source=yf; user id=ctm_dbo;password=123
string k3=node.InnerXml;//Data Source=yf; user id=ctm_dbo;password=123
node=null;
}
********************************************************************
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="ConnectionString" value="Data Source=yf; user id=ctm_dbo;password=123" />
</appSettings>
</configuration>
**--------------------------------------------------------------------**
XmlNode node=doc.SelectSingleNode("/configuration/appSettings/add");
if(node!=null)
{
string k=node.Attributes["key"].Value;
string v=node.Attributes["value"].Value;
node=null;
}
*--------------------------------------------------------------------*
XmlNode node=doc.SelectSingleNode("/configuration/appSettings/add");
if(node!=null)
{
XmlNodeReader nr=new XmlNodeReader(node);
nr.MoveToContent();
//检查当前节点是否是内容节点。如果此节点不是内容节点,则读取器向前跳至下一个内容节点或文件结尾。
nr.MoveToAttribute("value");
string s=nr.Value;
node=null;
}
相关推荐
.NET Web API 接收 XML 格式数据的 3 种情况小结 在 ASP.NET 编程中,Web API 是一个框架,可以很容易构建达成了广泛的 HTTP 服务客户端,包括浏览器和移动设备。是构建 RESTful 应用程序的理想平台的 .NET 框架。...
ASP.NET 简单生成 XML 文件的方法 标题解释 ASP.NET 编程知识中,生成 XML 文件是一种常见的操作。XML(Extensible Markup Language)是一种标记语言,用于存储和传输数据。...asp.net 创建 XML 文件的方法小结
在本文中,我们将深入探讨ADO.NET的关键概念,特别是通过SqlConnection和SqlCommand对象来连接和操作SQL Server数据库。 首先,我们来看如何使用SqlConnection连接到SQL Server。在C#代码中,我们需要导入`System....
在 ASP.NET 中,我们可以利用 .NET Framework SDK 中的 `System.Xml` 命名空间中的类来创建、操作和保存 XML 文档。以下是对 ASP.NET 创建 XML 文件的两种常见方法的详细解释: **方法一:逐步构建 XML 文档** ...
\r\n 3.1.9 XML串行化\r\n 3.1.10 XML Web服务 \r\n 3.1.11 XML和ADO.NET\r\n 3.1.12 ASP.NET配置 \r\n 3.2 小结 \r\n第4章 用XmlReader和XmlWriter读写XML数据\r\n 4.1 XML的读取器和书写器\r\n 4.2 使用...
【ASP.NET编程知识】Json.net 是一个非常流行的.NET框架下的JSON序列化和反序列化库,广泛用于ASP.NET应用程序中处理JSON数据。本文档总结了Json.net的一些常见使用方法。 首先,Json.net允许我们将.NET对象转换为...
它可以与ASP.NET服务器控件配合使用,通过AJAX(Asynchronous JavaScript and XML)技术实现无刷新更新,提升用户体验。例如,`PageMethods`和`WebServices`可以用来调用服务器端的方法,`jQuery`库则能简化DOM操作...
### 小结 - `DataSet`和`XML`在ASP.NET应用中扮演着关键角色,尤其是在数据管理和传输方面。理解它们的特点、区别以及如何相互转换,对于提升应用程序的性能和可维护性至关重要。 ### 进一步学习资源 - MSDN网站...
前段时间接到一个任务写一个小接口,要接收java端返回过来的短信xml数据。 刚拿到项目,我的第一想法是对方会以什么形式发送xml格式的数据给我呢,设想三种情况。 我一开始拿到手上的是一串xml格式字符串。如下 <...
此外,Json.net提供了一些高级功能,包括但不限于支持LINQ to JSON API,允许开发者以一种类似于操作XML的方式操作JSON数据。这种操作方式提供了很大的灵活性和强大的数据处理能力。 Json.net库还包含了扩展方法,...
TreeView控件可以绑定到数据源,如ArrayList、DataTable或XML文档,自动构建树结构。使用DataSource和DataMember属性进行绑定,通过数据提供者自动填充Nodes集合。 七、应用实例 1. 文件系统浏览:通过遍历目录...
### ASP.NET学习经验小结 ASP.NET是一种广泛使用的Web开发框架,由微软开发并支持。本文将基于提供的标题、描述及部分代码示例,详细解析ASP.NET中的几个关键概念及其应用,包括验证器(Validator)、IsPostBack、...
火龙果软件工程技术中心本页内容简介基础类扩展XSD处理XmlSerializer的内部原理通过CodeDom自定义映射技巧小结简介自动代码生成—无论是数据访问层、业务实体类还是用户界面—可以大大提高开发人员的生产效率。...
8. Filter 在 ASP.NET MVC 中的应用:ASP.NET MVC 中提供了 4 类 Filter 接口,分别是 IActionFilter、IAuthorizationFilter、IExceptionFilter 和 IResultFilter, Filter 可以对一系列操作进行横切干扰, Filter ...
小结大约三年前,我在参加一个软件会议后相信,如果不深入理解XML,未来就不可能参加编程工作。从初期到现在,XML的确已经走过了很长的路程,甚至涉及到公用编程框架的最深处。在本文中,我将回顾用于处理XML文档的...
小结 第二章 我的第一个ASP.NET程序 i. 配置开发环境 ii. 运行配套光盘 iii. 第一个例子 iv. 近观ASP.NET v. 小结 第三章 ASP.NET和ASP的比较 i. ASP和ASP.NET的对比 ii. 从ASP到ASP.NET...
小结 第二章 我的第一个ASP.NET程序 i. 配置开发环境 ii. 运行配套光盘 iii. 第一个例子 iv. 近观ASP.NET v. 小结 第三章 ASP.NET和ASP的比较 i. ASP和ASP.NET的对比 ii. 从ASP到ASP.NET(一个移植的例子) ...
上篇 ASP.NET应用与开发基础 第1章 ASP.NET概论 1.1 ASP.NET简介 1.1.1 从.NET谈起 1.1.2 动态网站设计技术 1.1.3 ASP.NET的介绍 1.1.4 ASP.NET和ASP的对比 1.2 运行环境配置 ...12.4 小结
小结第二章 我的第一个ASP.NET程序 i. 配置开发环境ii. 运行配套光盘iii. 第一个例子iv. 近观ASP.NET v. 小结 第三章 ASP.NET和ASP的比较i. ASP和ASP.NET的对比ii. 从ASP到ASP.NET(一个移植的例子) iii. 如何移植...
上篇ASP.NET应用与开发基础 第1章ASP.NET概论 1.1ASP.NET简介 1.1.1从.NET谈起 1.1.2动态网站设计技术 1.1.3ASP.NET的介绍 1.1.4ASP.NET和ASP的对比 1.2运行环境配置 1.2.1ASP.NET运行环境介绍 ...12.4小结