asp.net C#对xml文档创建 修改 删除 查找
2016-06-13 13:12
876 查看
1、创建 XML
导入命名空间:
xml 生成数据:
<Notes>
<Day date="今天">
<part>aaa</part>
</Day>
</Notes>
2.读写XML文件
·使用XmlTextWriter写入XML方法
·使用XmlTextReader读取XML方法
·作用SqlCommand.ExecuteXmlReader()取得XML
3.查找xml
<Placemark>
<description>Front line</description>
<Name>sole</Name>
<styleUrl>#roadStyle</styleUrl>
<LineString>
<coordinates>
114.0456,22.324
</coordinates>
</LineString>
</Placemark>
如何根据Name的值找到这个Placemark
让后插入数据到
coordinates节点中呢。
最后save(路径)
4、显示所有数据
最后附一个C#操作Xml通用工具类
读取XML节点属性值及节点值
Student1.xml文件内容:
把XML文件内容,通过Gridview显示
xmltodataset.xml文件内容:
导入命名空间:
using System.Xml; //创建 XML 对象 XmlDocument xmlDocument = new XmlDocument(); // 声明 XML XmlDeclaration xmlDeclare =xmlDocument.CreateXmlDeclaration("1.0","utf-8",null); //创建根节点 XmlElement elementRoot =xmlDocument.CreateElement("Nodes"); xmlDocument.AppendChild(elementRoot); //创建节点 Day XmlElement elementDay = xmlDocument.CreateElement("Day"); //给节点Day设置属性,并赋值 elementDay.SetAttribute("date","今天"); elementRoot.AppendChild(elementDay); //创建 Day 的子节点Part XmlElement elementPart = xmlDocument.CreateElement("Part"); elementPart.InnerText = " aaa"; elementDay.AppendChild(elementPart); //保存到 XML 文件件下 xmlDocument.Save("./myXml.xml");
xml 生成数据:
<Notes>
<Day date="今天">
<part>aaa</part>
</Day>
</Notes>
2.读写XML文件
<?xml version="1.0" encoding="utf-8" ?> <PhoneBook> <phone id="001"> <Name>加菲尔德</Name> <Number>5555555</Number> <City>纽约</City> <DateOfBirth>26/10/1978</DateOfBirth> </phone> <phone id="002"> <Name>迈克</Name> <Number>6666666</Number> <City>纽约</City> <DateOfBirth>12/02/1978</DateOfBirth> </phone> </PhoneBook> ********************************************************************* ·使用Document读取及写入XML方法 private void xmlfun() { XmlDocument doc = new XmlDocument(); doc.Load(Server.MapPath("phone.xml")); XmlElement node = doc.CreateElement("phone"); XmlAttribute atr = doc.CreateAttribute("id"); atr.InnerText = "003"; node.Attributes.Append(atr); XmlNode xnode = (XmlNode)doc.CreateElement("Name"); xnode.InnerText="testName"; node.AppendChild(xnode); xnode = (XmlNode)doc.CreateElement("Number"); xnode.InnerText="119"; node.AppendChild(xnode); xnode = (XmlNode)doc.CreateElement("City"); xnode.InnerText="cs"; node.AppendChild(xnode); xnode = (XmlNode)doc.CreateElement("DateOfBirth"); xnode.InnerText="12/02/1978"; node.AppendChild(xnode); doc.DocumentElement.InsertAfter(node,doc.DocumentElement.LastChild); doc.Save(Server.MapPath("phone1.xml")); //必须要存为不同的文件 }
·使用XmlTextWriter写入XML方法
private void xmlwriter() { XmlTextWriter writer= new XmlTextWriter(Server.MapPath("phone4.xml"),null); writer.Formatting = Formatting.Indented; //缩进格式 writer.Indentation =4; writer.WriteStartDocument(); writer.WriteStartElement("Person"); writer.WriteStartAttribute("ID",null); writer.WriteString("004"); writer.WriteEndAttribute(); writer.WriteStartElement("Name"); writer.WriteString("testWriterName"); writer.WriteEndElement(); writer.WriteStartElement("Number"); writer.WriteString("88888"); writer.WriteEndElement(); writer.WriteStartElement("City"); writer.WriteString("testWriterCity"); writer.WriteEndElement(); writer.Flush(); writer.Close(); }
·使用XmlTextReader读取XML方法
private void xmlread() { XmlTextReader reader = new XmlTextReader(Server.MapPath("phone.xml")); while(reader.Read()) { if(reader.LocalName.Equals("Name") || reader.LocalName.Equals("Number")) { this.Label1.Text += reader.ReadString()+"t"; }
·作用SqlCommand.ExecuteXmlReader()取得XML
SqlConnecting conn = new SqlConnection(CONNSTR); SqlCommand cmd = new SqlCommand("select fname from employee for xml auto",conn); conn.open(); XmlReader reader = cmd.ExecuteXmlReader(); ...... ################ 所取xml数据格式 ################# <employee fname="aria"/> <employee fname="carlors"/>......
3.查找xml
<Placemark>
<description>Front line</description>
<Name>sole</Name>
<styleUrl>#roadStyle</styleUrl>
<LineString>
<coordinates>
114.0456,22.324
</coordinates>
</LineString>
</Placemark>
如何根据Name的值找到这个Placemark
让后插入数据到
coordinates节点中呢。
XmlElement Chid_Elent = Doc.DocumentElement; //得到XML的根节点 if (Chid_Elent.ChildNodes.Count > 0)//如果根节点下有子节点 { foreach (XmlElement Elent in Chid_Elent.ChildNodes)//循环获取节点值 { value=Elent.InnerText;//得到值 Elent.InnerText=vaue; //或者赋值 value为外部变量 } }
最后save(路径)
4、显示所有数据
XmlNode xn=xmlDoc.SelectSingleNode("bookstore"); XmlNodeList xnl=xn.ChildNodes; foreach(XmlNode xnf in xnl) { XmlElement xe=(XmlElement)xnf; Console.WriteLine(xe.GetAttribute("genre"));//显示属性值 Console.WriteLine(xe.GetAttribute("ISBN")); XmlNodeList xnf1=xe.ChildNodes; foreach(XmlNode xn2 in xnf1) { Console.WriteLine(xn2.InnerText);//显示子节点点文本 } }
最后附一个C#操作Xml通用工具类
using System; using System.Xml; namespace WLerp.Common.Util { /// <summary> /// Xml 操作工具类 /// </summary> public sealed class XmlUtil { private XmlUtil() { } /// <summary> /// 创建节点 /// </summary> /// <param name="node"></param> /// <param name="newElementName"></param> /// <returns></returns> public static XmlNode AppendElement(XmlNode node, string newElementName) { return AppendElement(node, newElementName, null); } /// <summary> /// 创建节点 /// </summary> /// <param name="node"></param> /// <param name="newElementName"></param> /// <param name="innerValue"></param> /// <returns></returns> public static XmlNode AppendElement(XmlNode node, string newElementName, string innerValue) { XmlNode oNode; if (node is XmlDocument) { oNode = node.AppendChild(((XmlDocument)node).CreateElement(newElementName)); } else { oNode = node.AppendChild(node.OwnerDocument.CreateElement(newElementName)); } if (innerValue != null) { oNode.AppendChild(node.OwnerDocument.CreateTextNode(innerValue)); } return oNode; } /// <summary> /// 创建属性 /// </summary> /// <param name="xmlDocument"></param> /// <param name="name"></param> /// <param name="value"></param> /// <returns></returns> public static XmlAttribute CreateAttribute(XmlDocument xmlDocument, string name, string value) { XmlAttribute oAtt = xmlDocument.CreateAttribute(name); oAtt.Value = value; return oAtt; } /// <summary> /// 设置属性的值 /// </summary> /// <param name="node"></param> /// <param name="attributeName"></param> /// <param name="attributeValue"></param> public static void SetAttribute(XmlNode node, string attributeName, string attributeValue) { if (node.Attributes[attributeName] != null) { node.Attributes[attributeName].Value = attributeValue; } else { node.Attributes.Append(CreateAttribute(node.OwnerDocument, attributeName, attributeValue)); } } /// <summary> /// 获取属性的值 /// </summary> /// <param name="node"></param> /// <param name="attributeName"></param> /// <param name="defaultValue"></param> /// <returns></returns> public static string GetAttribute(XmlNode node, string attributeName, string defaultValue) { XmlAttribute att = node.Attributes[attributeName]; if (att != null) { return att.Value; } else { return defaultValue; } } /// <summary> /// 获取节点的值 /// </summary> /// <param name="parentNode"></param> /// <param name="nodeXPath"></param> /// <param name="defaultValue"></param> /// <returns></returns> public static string GetNodeValue(XmlNode parentNode, string nodeXPath, string defaultValue) { XmlNode node = parentNode.SelectSingleNode(nodeXPath); if (node.FirstChild != null) { return node.FirstChild.Value; } else if (node != null) { return node.Value; } else { return defaultValue; } } } }
读取XML节点属性值及节点值
protected void ReadNode_Click(object sender, EventArgs e) { XmlDocument doc = new XmlDocument(); doc.Load(Server.MapPath("Student1.xml")); XmlNodeList list = doc.GetElementsByTagName("StuName"); //Student1.xml文件里面的StuName节点 foreach (XmlElement host in list) { Response.Write("Student1.xml节点里面的StuName节点的name属性的值为:" + host.Attributes["name"].Value + "<br/>"); Response.Write("Student1.xml节点里面的StuName节点的id属性的值为:" + host.Attributes["id"].Value + "<br/>"); } String d1 = doc.SelectSingleNode("//StuName[@id='1']/@name").Value;//读取stuname标签里面的id为1的name的值 Response.Write("Student1.xml节点里面的StuName节点的name属性的值为:" + d1 + "<br/>"); }
protected void readxml() { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(Server.MapPath("Student1.xml")); //加载xml XmlNodeList NodeList = xmlDoc.SelectNodes("/Students/Student"); //xml节点的路径 //循环遍历节点 for (int i = 0; i < NodeList.Count; i++) { string xmlStuName = NodeList[i].ChildNodes[0].InnerText; //获取第一个Student节点的StuName string xmlStuSex = NodeList[i].ChildNodes[1].InnerText; //获取第一个Student节点的StuSex string xmlStuAge = NodeList[i].ChildNodes[2].InnerText; //获取第一个Student节点的StuAge string xmlStuAddress = NodeList[i].ChildNodes[3].InnerText; //获取第一个Student节点的StuAddress //循环读取xml节点信息 Response.Write("当前的xml文件中的节点StuName是:" + xmlStuName + "<br />" + "当前的xml文件中的节点StuSex是:" + xmlStuSex + "<br />" + "当前的xml文件中的节点StuAge是:" + xmlStuAge + "<br />" + "当前的xml文件中的节点StuAddress是:" + xmlStuAddress); } }
Student1.xml文件内容:
<?xml version="1.0" encoding="utf-8"?> <Students> <Student> <StuName id='1' name='lizong'>lili</StuName> <StuSex>nan</StuSex> <StuAge>24</StuAge> <StuAddress>shenzhen</StuAddress> </Student> </Students>
把XML文件内容,通过Gridview显示
private void LoadGridView() { DataSet ds = new DataSet(); ds.ReadXml(Server.MapPath("xmltodataset.xml")); this.GridView2.DataSource = ds; this.GridView2.DataBind(); }
xmltodataset.xml文件内容:
<?xml version="1.0" encoding="utf-8"?> <students> <student> <id>4</id> <name id='1' name='zhangsan'>text4</name> <age>21</age> </student> <student> <id>5</id> <name id='1' name='zhangsan'>text5</name> <age>22</age> <sex>nan</sex> </student> <student> <id>1</id> <name id='1' name='zhangsan'>text1</name> <age>18</age> </student> <student> <id>2</id> <name id='1' name='zhangsan'>text2</name> <age>19</age> </student> <student> <id>3</id> <name id='1' name='zhangsan'>text3</name> <age>20</age> </student> </students>
相关文章推荐
- 分享微信开发Html5轻游戏中的几个坑
- c#调用COM组件
- 星外ASP.Net的安全设置相关说明
- C#实现把指定数据写入串口
- C#动态创建button的方法
- C#中抽象方法与虚拟方法的区别
- c#中虚函数的相关使用方法
- C#实现给图片加水印的方法
- C#使用加边法计算行列式的值
- C#实现多线程的同步方法实例分析
- C#中尾递归的使用、优化及编译器优化
- C#中的delegate委托类型基本学习教程
- C#实现子窗体与父窗体通信方法实例总结
- C#通用邮件发送类分享
- 举例讲解C#中自动实现的属性
- C#中this的用法集锦
- C#数据结构之顺序表(SeqList)实例详解
- C#.NET获取拨号连接的宽带连接方法
- C#异步绑定数据实现方法
- C#实现AddRange为数组添加多个元素的方法