C#操作XML总结
1、using System.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_x("News"); //将节点加到指定节点下,作为其子节点
root.AppendChild(node); //将节点加到指定节点下某个子节点前
root.InsertBefore(node,root.ChildeNodes[i]); //为指定节点的新建属性并赋值
node.SetAttribute("id",""); //为指定节点添加子节点
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"));
2、XmlTextWriter xmlWriter;
XmlTextWriter xmlWriter;
//导入指定xml文件 string strFilename = Server.MapPath("data1.xml") ;
//创建一个xml文档
xmlWriter = new XmlTextWriter(strFilename,Encoding.Default);
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();
////////////////////////////////////////////////////////////////////////////////////// ,添加一个结点: 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") ); ////////////////////////////////////////////////////////////////////////////////////// ,修改结点的值(属性和子结点): 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") );//保存。 ////////////////////////////////////////////////////////////////////////////////////// ,修改结点(添加结点的属性和添加结点的自结点):
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",""); XmlElement xesub=xmlDoc.CreateElement("flag");
xesub.InnerText="";
xe.AppendChild(xesub);
}
xmlDoc.Save( Server.MapPath("data.xml") ); ////////////////////////////////////////////////////////////////////////////////////// ,删除结点中的某一个属性:
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") ); //////////////////////////////////////////////////////////////////////////////////////]
,删除结点:
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.Load( Server.MapPath("data.xml") );
XmlNode root=xmlDoc.SelectSingleNode("Employees");
XmlNodeList xnl=xmlDoc.SelectSingleNode("Employees").ChildNodes;
for(int i=;i<xnl.Count;i++)
{
XmlElement xe=(XmlElement)xnl.Item(i);
if(xe.GetAttribute("genre")=="张三")
{
root.RemoveChild(xe);
if(i<xnl.Count)i=i-;
}
}
xmlDoc.Save( Server.MapPath("data.xml") ); //////////////////////////////////////////////////////////////////////////////////////]
,按照文本文件读取xml System.IO.StreamReader myFile =new
System.IO.StreamReader(Server.MapPath("data.xml"),System.Text.Encoding.Default);
//注意System.Text.Encoding.Default string myString = myFile.ReadToEnd();//myString是读出的字符串
myFile.Close();
3、xml to linq

XDocument doc = new XDocument( ///创建XDocument类的实例
new XDeclaration("1.0", "utf-8", "yes"),///XML的声明,包括版本,编码,xml文件是否独立
new XElement("Books", ///添加根节点
new XElement("Book", ///添加一个节点
new XAttribute("BookID", "001"),///添加属性BookID
new XElement("BookNo", "0001"), ///添加元素BookNo
new XElement("BookName", "Book 0001"),///添加元素BookName
new XElement("BookPrice", "40"),///添加元素BookPrice
new XElement("BookRemark", "This is a book 0001")///添加元素BookRemark
)
)
);
///保存XML文件到指定地址
doc.Save(@"C:\Books.xml");

2.添加元素

///导入XML文件
XElement xe = XElement.Load(@"C:\Books.xml");
///创建一个新节点
XElement book1 = new XElement("Book",
new XAttribute("BookID", "002"),
new XElement("BookNo", "0002"),
new XElement("BookName", "Book 0002"),
new XElement("BookPrice", "50"),
new XElement("BookRemark", "This is a book 0002")
);
///添加节点到XML文件中,并保存
xe.Add(book1);
///创建一个新节点
XElement book2 = new XElement("Book",
new XAttribute("BookID", "003"),
new XElement("BookNo", "0003"),
new XElement("BookName", "Book 0003"),
new XElement("BookPrice", "30"),
new XElement("BookRemark", "This is a book 0003")
);
///添加节点到XML文件中,并保存
xe.Add(book2);
///创建一个新节点
XElement book3 = new XElement("Book",
new XAttribute("BookID", "004"),
new XElement("BookNo", "0004"),
new XElement("BookName", "Book 0004"),
new XElement("BookPrice", "60"),
new XElement("BookRemark", "This is a book 0004")
);
///添加节点到XML文件中
xe.Add(book3);
///保存到XML文件中
xe.Save(@"C:\Books.xml");

3.修改元素

XElement xe = XElement.Load(@"C:\Books.xml");
///查询修改的元素
IEnumerable<XElement> element = from e in xe.Elements("Book")
where e.Attribute("BookID").Value == "xxx" //xxx指定的修改元素
select e;
///修改元素
if (element.Count() > 0)
{
XElement firstelement = element.First();
///设置新的属性
firstelement.SetAttributeValue("BookID", "new004");
///替换成新的节点
firstelement.ReplaceNodes(
new XElement("BookNo", "new0004"),
new XElement("BookName", "Book new0004"),
new XElement("BookPrice", "45"),
new XElement("BookRemark", "This is a book new0004")
);
}
xe.Save(@"C:\Books.xml");

4.删除元素

XElement xe = XElement.Load(@"C:\Books.xml");
///查询修改的元素
IEnumerable<XElement> element = from e in xe.Elements("Book")
where e.Attribute("BookID").Value == "xxx" //xxx 指定删除元素
select e;
///修改元素
if (element.Count() > 0)
{
XElement firstelement = element.First();
///删除此元素的所有节点和属性
firstelement.RemoveAll();
///删除此元素的属性
//firstelement.RemoveAttributes();
///删除此元素的子节点
//firstelement.RemoveNodes();
}
xe.Save(@"C:\Books.xml");

5.一些常用查询

XElement xe = XElement.Load(@"C:\Books.xml");
//查询元素并排序
var elements = xe.Elements("Book")
.Where(e => Convert.ToInt32(e.Attribute("BookID").Value.Substring(e.Attribute("BookID").Value.Length - 1, 1)) > 1)
.OrderByDescending(e => (string)e.Element("BookName"))
.ToList();
//查询指定元素的子元素
var elements = xe.Elements("Book")
.Descendants("xxx") //xxx 指定元素
.ToList();
//查询指定属性的元素
var eAttribute = xe.Elements("Book")
.Where(e => (string)e.Attribute("BookID") == "xxx") //xxx 指定属性
.OrderBy(e => e.Element("BookID"))
.ToList();
//查询指定名称的元素
var elements = xe.Elements("Book")
.Where(e => (string)e.Element("BookName") == "xxx") //指定元素名称
.OrderBy(e => e.Element("BookID"))
.ToList();

C#操作XML总结的更多相关文章
- Asp.Net 操作XML文件的增删改查 利用GridView
不废话,直接上如何利用Asp.NET操作XML文件,并对其属性进行修改,刚开始的时候,是打算使用JS来控制生成XML文件的,但是最后却是无法创建文件,读取文件则没有使用了 index.aspx 文件 ...
- php中通过DOM操作XML
DOM文档在js里早就接触过,知道DOM不但可以操作html文档,还可以操作XHTML,XML等文档,有着极强的通用性,下面我们通过两个小例子,看看在PHP中是如何用DOM操作XML文档的,和js中差 ...
- 使用dom4j操作XML
DOM4J介绍 DOM4J是使用Java语言编写的,用于读写及操作XML的一套组件,DOM4J同时具有DOM修改文件的优点和SAX读取快速的优点. DOM4J的使用 首先下载dom4j的JAR包,我用 ...
- 使用JDOM操作XML
JDOM介绍 JDOM是使用Java语言编写的,用于读写及操作XML的一套组件,Jdom同时具有DOM修改文件的优点和SAX读取快速的优点. JDOM的使用 首先下载JDOM的JAR包,本文使用的是j ...
- php : DOM 操作 XML
DOM 操作 XML 基本用法 XML文件: person.XML <?xml version="1.0" encoding="utf-8" ?> ...
- Strus2第一次课:dom4j操作xml
先从底层的xml操作技术记录: 当我们新建一个项目,什么架包都没加入的时候,java提供了 org.w3c.dom给我们操作xml里面的元素 import org.w3c.dom.Document; ...
- .NET 操作XML
在C#.net中如何操作XML 需要添加的命名空间: using System.Xml; 定义几个公共对象: XmlDocument xmldoc ; XmlNode xmlnode ; XmlEle ...
- php操作xml
最近计划写个人的小网站,一系列原因选择了用php来写,最大的问题就是虽然php很流行,但我从来没有接触过php,看了一个多星期的基本语法后做些小练习热热身,但是期间是各种问题啊,主要是对php不熟悉, ...
- JavaScript操作XML
JavaScript操作XML (一) JavaScript操作XML是通过XML DOM来完成的.那么什么是XML DOM呢?XML DOM 是: 用于 XML 的标准对象模型 用于 XML 的标准 ...
- C#操作XML方法集合
一 前言 先来了解下操作XML所涉及到的几个类及之间的关系 如果大家发现少写了一些常用的方法,麻烦在评论中指出,我一定会补上的!谢谢大家 * 1 XMLElement 主要是针对节点的一些属性进行操 ...
随机推荐
- .Net Core Linux centos7行—IOC模块
.net core中可以说是用了全新的IOC模板,定义在Microsoft.Extensions.DependencyInjection下.提供了一套标准的接口.并提供了默认实现.并且大范围使用着,处 ...
- LVS原理详解
一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算 ...
- redis-内存异常 Redis is configured to save RDB snapshots解决
连接reids获取数据时提示 Redis is configured to save RDB snapshots, but is currently not able to persist on di ...
- Sql 2008 的常用函数
1.LEN 函数:返回数据的长度 ') 返回:8 2.ASCII函数:返回字符串最左边的ascii值 SELECT ASCII('abc') 返回:97 3.LEFT函数:从左边开始截取指定长度的字符 ...
- cocos2d-x屏幕分辨率,窗口大小总结
这个东西很烦人,相信很多人都不理解 今天来总结一下,首先有很多概念都要事先弄得清楚明白 1.屏幕分辨率 所谓屏幕分辨率相信很多人都知道他的概念,不就是1280pxX720PX吗?不就是这种形式吗?有什 ...
- 【BZOJ-4698】Sandy的卡片 后缀数组
4698: Sdoi2008 Sandy的卡片 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 140 Solved: 55[Submit][Stat ...
- javascript操作字符串的方法
string.indexOf()//返回字符串中第一个与给定子串匹配的子串序号字符串的IndexOf()方法搜索在该字符串上是否出现了作为参数传递的字符串,如果找到字符串,则返回字符的起始位置 (0表 ...
- mysql数据库远程访问指定数据库设置
grant all privileges on huarenwang.* to 'huarenwang'@'%' IDENTIFIED BY 'huarenwang'; on后面的是指定的数据库to后 ...
- ssl
在Java加密技术(八)中,我们模拟了一个基于RSA非对称加密网络的安全通信.现在我们深度了解一下现有的安全网络通信--SSL. 我们需要构建一个由CA机构签发的有效证书,这里我们使用上文中生 ...
- CentOS7下默认目录安装mono+jexus教程
一.阅读前须知: 1.本文属于安装完Centos7之后的步骤 2.如果还不了解mono,请点击mono 3.本篇主要内容是使用默认目录安装mono+jexus教程,使用自定义目录请查看使用自定义目录安 ...