ASP.NET - 使用 XML
对XML文件进行简单的增加,删除,修改,查看等功能。
XML代码:
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book>
<name>哈里波特</name>
<price>10</price>
<memo>这是一本很好看的书。</memo>
</book>
<book id="B02">
<name>三国演义</name>
<price>10</price>
<memo>四大名著之一。</memo>
</book>
<book id="B03">
<name>水浒</name>
<price>6</price>
<memo>四大名著之一。</memo>
</book>
<book id="B04">
<name>红楼</name>
<price>5</price>
<memo>四大名著之一。</memo>
</book>
</books>
C#代码:
using System;
using System.Xml; namespace XMLDemo
{
class Program
{
static void Main(string[] args)
{
XmlElement theBook = null, theElem = null, root = null;
XmlDocument xmldoc = new XmlDocument();
try
{
xmldoc.Load(@"C:\Users\HF_Ultrastrong\Desktop\WFA_Test\XMLDemo\Books.xml");
root = xmldoc.DocumentElement; //--- 新建一本书开始 ----
theBook = xmldoc.CreateElement("book");
theElem = xmldoc.CreateElement("name");
theElem.InnerText = "新书";
theBook.AppendChild(theElem); theElem = xmldoc.CreateElement("price");
theElem.InnerText = "";
theBook.AppendChild(theElem); theElem = xmldoc.CreateElement("memo");
theElem.InnerText = "新书更好看。";
theBook.AppendChild(theElem);
root.AppendChild(theBook);
Console.Out.WriteLine("--- 新建一本书开始 ----");
Console.Out.WriteLine(root.OuterXml);
//--- 新建一本书完成 ---- //--- 下面对《哈里波特》做一些修改。 ----
//--- 查询找《哈里波特》----
theBook = (XmlElement)root.SelectSingleNode("/books/book[name='哈里波特']");
Console.Out.WriteLine("--- 查找《哈里波特》 ----");
Console.Out.WriteLine(theBook.OuterXml);
//--- 此时修改这本书的价格 -----
//getElementsByTagName返回的是NodeList,所以要跟上item(0)。另外,GetElementsByTagName("price")相当于SelectNodes(".//price")。
theBook.GetElementsByTagName("price").Item().InnerText = "";
Console.Out.WriteLine("--- 此时修改这本书的价格 ----");
Console.Out.WriteLine(theBook.OuterXml);
//--- 另外还想加一个属性id,值为B01 ----
theBook.SetAttribute("id", "B01");
Console.Out.WriteLine("--- 另外还想加一个属性id,值为B01 ----");
Console.Out.WriteLine(theBook.OuterXml);
//--- 对《哈里波特》修改完成。 ---- //--- 再将所有价格低于10的书删除 ----
theBook = (XmlElement)root.SelectSingleNode("/books/book[@id='B02']");
Console.Out.WriteLine("--- 要用id属性删除《三国演义》这本书 ----");
Console.Out.WriteLine(theBook.OuterXml);
theBook.ParentNode.RemoveChild(theBook);
Console.Out.WriteLine("--- 删除后的XML ----");
Console.Out.WriteLine(xmldoc.OuterXml); //--- 再将所有价格低于10的书删除 ----
XmlNodeList someBooks = root.SelectNodes("/books/book[price<10]");
Console.Out.WriteLine("--- 再将所有价格低于10的书删除 ---");
Console.Out.WriteLine("--- 符合条件的书有 " + someBooks.Count + "本。 ---"); for (int i = ; i < someBooks.Count; i++)
{
someBooks.Item(i).ParentNode.RemoveChild(someBooks.Item(i));
}
Console.Out.WriteLine("--- 删除后的XML ----");
Console.Out.WriteLine(xmldoc.OuterXml); xmldoc.Save("books.xml");//保存到books.xml Console.In.Read();
}
catch (Exception e)
{
Console.Out.WriteLine(e.Message);
} Console.ReadKey();
}
}
}
效果:

//================================================================//
XML:
<?xml version="1.0" encoding="utf-8" ?>
<Computers>
<Computer ID="11111111" Description="Made in China">
<name>Lenovo</name>
<price>5000</price>
</Computer>
<Computer ID="2222222" Description="Made in USA">
<name>IBM</name>
<price>10000</price>
</Computer>
</Computers>
操作:
using System;
using System.Xml; namespace OperateXML
{
class Program
{
static void Main(string[] args)
{
try
{
//xml文件存储路径
string myXMLFilePath = "E:\\MyComputers.xml";
//生成xml文件
GenerateXMLFile(myXMLFilePath);
//遍历xml文件的信息
GetXMLInformation(myXMLFilePath);
//修改xml文件的信息
ModifyXmlInformation(myXMLFilePath);
//向xml文件添加节点信息
AddXmlInformation(myXMLFilePath);
//删除指定节点信息
DeleteXmlInformation(myXMLFilePath);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
} private static void GenerateXMLFile(string xmlFilePath)
{
try
{
//初始化一个xml实例
XmlDocument myXmlDoc = new XmlDocument();
//创建xml的根节点
XmlElement rootElement = myXmlDoc.CreateElement("Computers");
//将根节点加入到xml文件中(AppendChild)
myXmlDoc.AppendChild(rootElement); //初始化第一层的第一个子节点
XmlElement firstLevelElement1 = myXmlDoc.CreateElement("Computer");
//填充第一层的第一个子节点的属性值(SetAttribute)
firstLevelElement1.SetAttribute("ID", "");
firstLevelElement1.SetAttribute("Description", "Made in China");
//将第一层的第一个子节点加入到根节点下
rootElement.AppendChild(firstLevelElement1);
//初始化第二层的第一个子节点
XmlElement secondLevelElement11 = myXmlDoc.CreateElement("name");
//填充第二层的第一个子节点的值(InnerText)
secondLevelElement11.InnerText = "Lenovo";
firstLevelElement1.AppendChild(secondLevelElement11);
XmlElement secondLevelElement12 = myXmlDoc.CreateElement("price");
secondLevelElement12.InnerText = "";
firstLevelElement1.AppendChild(secondLevelElement12); XmlElement firstLevelElement2 = myXmlDoc.CreateElement("Computer");
firstLevelElement2.SetAttribute("ID", "");
firstLevelElement2.SetAttribute("Description", "Made in USA");
rootElement.AppendChild(firstLevelElement2);
XmlElement secondLevelElement21 = myXmlDoc.CreateElement("name");
secondLevelElement21.InnerText = "IBM";
firstLevelElement2.AppendChild(secondLevelElement21);
XmlElement secondLevelElement22 = myXmlDoc.CreateElement("price");
secondLevelElement22.InnerText = "";
firstLevelElement2.AppendChild(secondLevelElement22); //将xml文件保存到指定的路径下
myXmlDoc.Save(xmlFilePath);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
} private static void GetXMLInformation(string xmlFilePath)
{
try
{
//初始化一个xml实例
XmlDocument myXmlDoc = new XmlDocument();
//加载xml文件(参数为xml文件的路径)
myXmlDoc.Load(xmlFilePath);
//获得第一个姓名匹配的节点(SelectSingleNode):此xml文件的根节点
XmlNode rootNode = myXmlDoc.SelectSingleNode("Computers");
//分别获得该节点的InnerXml和OuterXml信息
string innerXmlInfo = rootNode.InnerXml.ToString();
string outerXmlInfo = rootNode.OuterXml.ToString();
//获得该节点的子节点(即:该节点的第一层子节点)
XmlNodeList firstLevelNodeList = rootNode.ChildNodes;
foreach (XmlNode node in firstLevelNodeList)
{
//获得该节点的属性集合
XmlAttributeCollection attributeCol = node.Attributes;
foreach (XmlAttribute attri in attributeCol)
{
//获取属性名称与属性值
string name = attri.Name;
string value = attri.Value;
Console.WriteLine("{0} = {1}", name, value);
} //判断此节点是否还有子节点
if (node.HasChildNodes)
{
//获取该节点的第一个子节点
XmlNode secondLevelNode1 = node.FirstChild;
//获取该节点的名字
string name = secondLevelNode1.Name;
//获取该节点的值(即:InnerText)
string innerText = secondLevelNode1.InnerText;
Console.WriteLine("{0} = {1}", name, innerText); //获取该节点的第二个子节点(用数组下标获取)
XmlNode secondLevelNode2 = node.ChildNodes[];
name = secondLevelNode2.Name;
innerText = secondLevelNode2.InnerText;
Console.WriteLine("{0} = {1}", name, innerText);
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
} private static void ModifyXmlInformation(string xmlFilePath)
{
try
{
XmlDocument myXmlDoc = new XmlDocument();
myXmlDoc.Load(xmlFilePath);
XmlNode rootNode = myXmlDoc.FirstChild;
XmlNodeList firstLevelNodeList = rootNode.ChildNodes;
foreach (XmlNode node in firstLevelNodeList)
{
//修改此节点的属性值
if (node.Attributes["Description"].Value.Equals("Made in USA"))
{
node.Attributes["Description"].Value = "Made in HongKong";
}
}
//要想使对xml文件所做的修改生效,必须执行以下Save方法
myXmlDoc.Save(xmlFilePath);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
} } private static void AddXmlInformation(string xmlFilePath)
{
try
{
XmlDocument myXmlDoc = new XmlDocument();
myXmlDoc.Load(xmlFilePath);
//添加一个带有属性的节点信息
foreach (XmlNode node in myXmlDoc.FirstChild.ChildNodes)
{
XmlElement newElement = myXmlDoc.CreateElement("color");
newElement.InnerText = "black";
newElement.SetAttribute("IsMixed", "Yes");
node.AppendChild(newElement);
}
//保存更改
myXmlDoc.Save(xmlFilePath);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
} private static void DeleteXmlInformation(string xmlFilePath)
{
try
{
XmlDocument myXmlDoc = new XmlDocument();
myXmlDoc.Load(xmlFilePath);
foreach (XmlNode node in myXmlDoc.FirstChild.ChildNodes)
{
//记录该节点下的最后一个子节点(简称:最后子节点)
XmlNode lastNode = node.LastChild;
//删除最后子节点下的左右子节点
lastNode.RemoveAll();
//删除最后子节点
node.RemoveChild(lastNode);
}
//保存对xml文件所做的修改
myXmlDoc.Save(xmlFilePath);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}
}
操作总结:
//所需要添加的命名空间
using System.Xml;
//初始化一个xml实例
XmlDocument xml=new XmlDocument();
//导入指定xml文件
xml.Load(“xml文件路径path”);
//指定一个节点
XmlNode root=xml.SelectSingleNode("节点名称");
//获取节点下所有直接子节点
XmlNodeList childlist=root.ChildNodes;
//判断该节点下是否有子节点
root.HasChildNodes;
//获取同名同级节点集合
XmlNodeList nodelist=xml.SelectNodes("节点名称");
//生成一个新节点
XmlElement node=xml.CreateElement("节点名称");
//将节点加到指定节点下,作为其子节点
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文件
xml.Save(“xml文件存储的路径path”);
ASP.NET - 使用 XML的更多相关文章
- Asp.Net 操作XML文件的增删改查 利用GridView
不废话,直接上如何利用Asp.NET操作XML文件,并对其属性进行修改,刚开始的时候,是打算使用JS来控制生成XML文件的,但是最后却是无法创建文件,读取文件则没有使用了 index.aspx 文件 ...
- asp调用.net xml web services
来源:http://www.cnblogs.com/notus/archive/2006/08/10/473000.html#2662503 (是不是实际上可以用这个办法调用任何xml web ser ...
- asp.net操作xml(增删查改)
asp.net操作xml 1.xml文档Products.xml <?xml version="1.0" encoding="utf-8"?> &l ...
- asp.net 生成xml文件 与 asp生成xml文件
一.asp.net 生成xml文件 webservice方式,调用接口: public XmlDocument List() { XmlDocument doc = new XmlDocument() ...
- ASP.NET中XML转JSON的方法
原文:ASP.NET中XML转JSON的方法 许多应用程序都将数据存储为XML的格式,而且会将数据以JSON的格式发送到客户端以做进一步处理.要实现这一点,它们必须将XML格式转换为JSON格式. X ...
- 浅谈ASP.net处理XML数据
XML是一种可扩展的标记语言,比之之前谈到的html有着很大的灵活性,虽然它只是与HTML仅有一个字母只差,但两者有很大的区别. XML也是标记语言,所以它每个标签必须要闭合,而HTML偶尔忘了闭合也 ...
- asp.net读取xml方法
这个适合刚学asp.net的同学,大神直接略过好了,asp.net经常会有很多用到XML的地方,比如全国省市的联动,以及一些菜单读取等等都有xml的影子,直接贴代码,以便我以后用到的时候忘了,注释我写 ...
- asp.net创建XML文件方法
方法一:按照XML的结构一步一步的构建XML文档. 通过.Net FrameWork SDK中的命名空间"System.Xml"中封装的各种类来实现的 方法一:按照XML的结 ...
- ASP.NET POST XML JSON数据,发送与接收
接收端通过Request.InputStream读取:byte[] byts = new byte[Request.InputStream.Length];Request.InputStream.Re ...
- asp.net操作xml
下面是xml文档内容: <content width="368" height="450" bgcolor="cccccc" load ...
随机推荐
- 开启Linux VNC远程桌面
Xwindows:gnome (红帽默认安装的图形界面) 一, 确认及安装VNCSERVER. 1,首先确认你服务器是否配置了VNCSERVER,可以在命令行下敲入以下命令查看: [root@lo ...
- ZigBee研究之旅(二)
在学习ZigBee设备CC2530模块时,编程后程序无法运行,但又十分确定程序的真确性的情况下,看看是不是project栏下的option选项配置的有问题,我是经常在这里出问题,一开始找不到原因,特此 ...
- mvc请求过程总结
前言 最近在思考一个问题,我的学习方法一般主要是看博客来学习新东西,但是光看,基本也没总结过,所以经常会出现这样的问题,某个知识点我知道,但是就是不能很好的表达出来,很简单的东西往往都不知道如何简短精 ...
- java 如何自定义异常 用代码展示 真心靠谱
先建两个自定义的异常类 ChushufuException类 class ChushufuException extends Exception { public ChushufuException( ...
- 分享,iOS国家手机区号代码.plist
APP注册需要手机号码的时候,如果有在其他国家的时候需要填写手机区号 一份有国家名字和区号的plist 参照微信注册的时候 格式是 <Array> <Array> <Ar ...
- Windows Phone 8初学者开发—第19部分:设置RecordAudio.xaml页面
原文 Windows Phone 8初学者开发—第19部分:设置RecordAudio.xaml页面 原文地址: http://channel9.msdn.com/Series/Windows-Ph ...
- 基于visual Studio2013解决C语言竞赛题之0605strcat
题目
- zzuli Camellia的难题(暴力)
1784: Camellia的难题 Time Limit: 2 Sec Memory Limit: 128 MB Submit: 67 Solved: 14SubmitStatusWeb Boar ...
- [置顶] HMM Tutorial 隐马尔科夫模型
有一个月没有写博客了,这一个月系统的学习了HMM model. 上周周五做了个report 感觉还好. 所以把Slide贴上来.
- 【模式识别】SVM核函数
下面是几种经常使用的核函数表示: 线性核(Linear Kernel) 多项式核(Polynomial Kernel) 径向基核函数(Radial Basis Function) 也叫高斯核(Gaus ...