详细介绍xml的使用方法总结
1、 认识xml
可扩展标记语言,一种用于标记电子文档使其具有结果性的标记语言,它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
2、 和超文本标记语言区别
2.1 html不一定需要成对出现,xml则一定需要成对出现。
2.2 html 不区分大小写,但是xml区分。
3、对xml文档增删改查
//声明一个XmlDocument空对象 protected XmlDocument XmlDoc = new XmlDocument(); /// <summary> /// 构造函数,导入xml文件 /// </summary> /// <param name="path"></param> public XmlHelper(string path) { try { XmlDoc.Load(path); } catch (Exception ex) { throw ex; } } /// <summary> /// 保存文件 /// </summary> /// <param name="path"></param> public void SaveXml(string path) { try { XmlDoc.Save(path); } catch (System.Exception ex) { throw ex; } }
/// <summary> /// 获取节点的子节点的内容 /// </summary> /// <param name="path"></param> /// <param name="rootNode"></param> /// <param name="attributeName"></param> /// <returns></returns> public string GetNodeChildAttribute(string path, string rootNode, string attributeName) { XmlNode xn = XmlDoc.SelectSingleNode(rootNode); StringBuilder sb = new StringBuilder(); XmlNodeList xnl = xn.ChildNodes; foreach (XmlNode xnf in xnl) { XmlElement xe = (XmlElement)xnf; XmlNodeList xnf1 = xe.ChildNodes; foreach (XmlNode xn2 in xnf1) { if (xn2.Name == attributeName) { sb.Append(xn2.InnerText);//显示子节点点文本 } } } return sb.ToString(); }
/// <summary> /// 获取节点的属性值 /// </summary> /// <param name="path">xml路径</param> /// <param name="rootNode">根节点名称</param> /// <param name="attributeName">属性名称</param> /// <returns></returns> public string GetNodeAttribute(string path, string rootNode, string attributeName) { try { XmlNode xn = XmlDoc.SelectSingleNode(rootNode); XmlNodeList xnl = xn.ChildNodes; StringBuilder sb = new StringBuilder(); foreach (XmlNode xnf in xnl) { XmlElement xe = (XmlElement)xnf; sb.Append(xe.GetAttribute(attributeName)); } return sb.ToString(); } catch (Exception) { throw; } }
/// <summary> /// 删除节点/节点属性 /// </summary> /// <param name="path">xml文件地址</param> /// <param name="rootNode">根节点名称</param> /// <param name="delNode">要删除的节点</param> /// <param name="attributeName">节点属性</param> /// <param name="attributeValue">属性值</param> public void DeleteNode(string path, string rootNode, string attributeName, string attributeValue) { try { XmlNodeList xnl = XmlDoc.SelectSingleNode(rootNode).ChildNodes; foreach (XmlNode xn in xnl) { XmlElement xe = (XmlElement)xn; if (xe.GetAttribute(attributeName) == attributeValue) { //xe.RemoveAttribute(attributeName);//删除属性 xe.RemoveAll();//删除该节点的全部内容 } } SaveXml(path); } catch (Exception) { throw; } }
/// <summary> /// 修改节点的子节点内容 /// </summary> /// <param name="path">xml文件路径</param> /// <param name="rootNode">根节点名称</param> /// <param name="attributeName">节点的子节点名称</param> /// <param name="attributeOldValue">节点的子节点原始内容</param> /// <param name="attributeNewValue">节点的子节点新内容</param> public void UpdateChildNodeAttribute(string path, string rootNode, string attributeName,string attributeOldValue, string attributeNewValue) { try { XmlNodeList nodeList = XmlDoc.SelectSingleNode(rootNode).ChildNodes;//获取根节点的所有子节点 foreach (XmlNode xn in nodeList)//遍历所有子节点 { XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型 if (string.IsNullOrEmpty(attributeName) || string.IsNullOrEmpty(attributeOldValue)) { return; } else { XmlNodeList nls = xe.ChildNodes; if (nls != null && nls.Count > 0) { foreach (XmlNode xn1 in nls)//遍历 { XmlElement xe2 = (XmlElement)xn1;//转换类型 if (xe2.InnerText == attributeOldValue)//如果找到 { xe2.InnerText = attributeNewValue;//则修改 break;//找到退出来就可以了 } } } } } SaveXml(path); } catch (Exception) { throw; } }
/// <summary> /// 修改节点属性值操作 /// </summary> /// <param name="path">xml文件路径</param> /// <param name="rootNode">根节点名称,如:bookstore</param> /// <param name="attributeName">节点属性名</param> /// <param name="attributeOldValue">节点属性原来值</param> /// <param name="attributeNewValue">节点属性修改后的值</param> public void UpdateNodeAttribute(string path, string rootNode, string attributeName, string attributeOldValue, string attributeNewValue) { try { XmlNodeList nodeList = XmlDoc.SelectSingleNode(rootNode).ChildNodes;//获取根节点的所有子节点 foreach (XmlNode xn in nodeList)//遍历所有子节点 { XmlElement xe = (XmlElement)xn;//将子节点类型专程xmlelement类型 if (string.IsNullOrEmpty(attributeName) || string.IsNullOrEmpty(attributeOldValue)) { return; } else { if (xe.GetAttribute(attributeName) == attributeOldValue) { xe.SetAttribute(attributeName, attributeNewValue); } } } SaveXml(path); } catch (Exception) { throw; } }
/// <summary> /// 插入节点操作 /// </summary> /// <param name="path">xml文件路径</param> /// <param name="rootNode">根节点名称,如:bookstore</param> /// <param name="node">节点名称,如:book</param> /// <param name="nodeAttributes">节点的属性-属性值集合</param> /// <param name="childAttributes">节点子节点名称-内容</param> public void InsertNode(string path, string rootNode, string node, Dictionary <string, string> nodeAttributes, Dictionary<string, string> childAttributes) { try { XmlNode root = XmlDoc.SelectSingleNode(rootNode);//找到根节点bookstore XmlElement xe1 = XmlDoc.CreateElement(node);//创建子节点book if (nodeAttributes != null && nodeAttributes.Count > 0) { foreach (var n in nodeAttributes) { xe1.SetAttribute(n.Key, n.Value); } } if (childAttributes != null && childAttributes.Count > 0) { XmlElement xesub1; foreach (var n in childAttributes) { xesub1 = XmlDoc.CreateElement(n.Key); xesub1.InnerText = n.Value; xe1.AppendChild(xesub1);//添加到<book>节点中 } } root.AppendChild(xe1); SaveXml(path); } catch (Exception) { throw; } }
调用:
string path = Server.MapPath("Books.xml"); XmlHelper xHelper = new XmlHelper(path); /*插入*/ //Dictionary<string, string> dc1 = new Dictionary<string, string>(); //dc1.Add("genre", "李赞红"); //dc1.Add("ISBN", "2-3631-4"); //Dictionary<strin插入g, string> dc2 = new Dictionary<string, string>(); //dc2.Add("title", "CS从入门到精通"); //dc2.Add("author", "候捷"); //dc2.Add("price", "58.3"); //xHelper.InsertNode(path, "bookstore", "book", dc1, dc2); /*修改*/ //xHelper.UpdateNodeAttribute(path, "bookstore", "genre", "李赞红", "李"); //xHelper.UpdateChildNodeAttribute(path, "bookstore", "title", "CS从入门到精通", "cs"); /*删除节点*/ //xHelper.DeleteNode(path, "bookstore", "genre", "李"); //Response.Write(xHelper.GetNodeAttribute(path, "bookstore", "genre")); //Response.Write(xHelper.GetNodeChildAttribute(path, "bookstore", "price"));
4、通过xml数据绑定
xml转DataTable
public DataTable XmlToData(string path, string rootNode, params string[] columns) { DataTable dt = new DataTable(); XmlNodeList xn = XmlDoc.SelectSingleNode(rootNode).ChildNodes; try { if (columns.Length > 0) { DataColumn dc; for (int i = 0; i < columns.Length; i++) { dc = new DataColumn(columns[i]); dt.Columns.Add(dc); } foreach (XmlNode xnf in xn) { XmlElement xe = (XmlElement)xnf; XmlNodeList xnf1 = xe.ChildNodes; int i = 0; DataRow dr = dt.NewRow(); foreach (XmlNode xn2 in xnf1) { dr[i] = xn2.InnerText; i++; } dt.Rows.Add(dr); } } } catch (Exception) { throw; } return dt; }
调用:
//string[] arr = { "title", "author", "price" }; //GridView1.DataSource = xHelper.XmlToData(path, "bookstore", arr); //GridView1.DataBind();
DataTable转xml
/*datatable转xml*/ public string DataTableToXml(DataTable dt) { if (dt != null) { MemoryStream ms = null; XmlTextWriter XmlWt = null; try { ms = new MemoryStream(); //根据ms实例化XmlWt XmlWt = new XmlTextWriter(ms, Encoding.Unicode); //获取ds中的数据 dt.WriteXml(XmlWt); int count = (int)ms.Length; byte[] temp = new byte[count]; ms.Seek(0, SeekOrigin.Begin); ms.Read(temp, 0, count); //返回Unicode编码的文本 UnicodeEncoding ucode = new UnicodeEncoding(); string returnValue = ucode.GetString(temp).Trim(); return returnValue; } catch (System.Exception ex) { throw ex; } finally { //释放资源 if (XmlWt != null) { XmlWt.Close(); ms.Close(); ms.Dispose(); } } } else { return ""; } }
调用:
//bool s = xHelper.CDataToXmlFile(xHelper.XmlToData(path, "bookstore", arr), "Bookss.xml","book");
5、xml序列化反序列化
[Serializable] public class Person { public string Name { get; set; } public int Age { get; set; } }
public class CXmlSerializer<T> where T : new() { private static XmlSerializer _Serializer = new XmlSerializer(typeof(T)); public static string Serialize(T t) { string s = ""; using (MemoryStream ms = new MemoryStream()) { _Serializer.Serialize(ms, t); s = System.Text.UTF8Encoding.UTF8.GetString(ms.ToArray()); } return s; } public static T Deserialize(string s) { T t; using (MemoryStream ms = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(s))) { t = (T)_Serializer.Deserialize(ms); } return t; } }
调用:
List<Person> list = new List<Person> { new Person { Name = "Xuj", Age = 20 }, new Person { Name = "duj", Age = 20 }, new Person { Name = "fuj", Age = 20 } }; string s = CXmlSerializer<List<Person>>.Serialize(list);
以上是详细介绍xml的使用方法总结的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

XML文件可以用PPT打开吗?XML,即可扩展标记语言(ExtensibleMarkupLanguage),是一种被广泛应用于数据交换和数据存储的通用标记语言。与HTML相比,XML更加灵活,能够定义自己的标签和数据结构,使得数据的存储和交换更加方便和统一。而PPT,即PowerPoint,是微软公司开发的一种用于创建演示文稿的软件。它提供了图文并茂的方

使用Python实现XML数据的合并和去重XML(eXtensibleMarkupLanguage)是一种用于存储和传输数据的标记语言。在处理XML数据时,有时候我们需要将多个XML文件合并成一个,或者去除重复的数据。本文将介绍如何使用Python实现XML数据的合并和去重的方法,并给出相应的代码示例。一、XML数据合并当我们有多个XML文件,需要将其合

使用Python实现XML数据的筛选和排序引言:XML是一种常用的数据交换格式,它以标签和属性的形式存储数据。在处理XML数据时,我们经常需要对数据进行筛选和排序。Python提供了许多有用的工具和库来处理XML数据,本文将介绍如何使用Python实现XML数据的筛选和排序。读取XML文件在开始之前,我们需要先读取XML文件。Python有许多XML处理库,

Python中的XML数据转换为CSV格式XML(ExtensibleMarkupLanguage)是一种可扩展标记语言,常用于数据的存储和传输。而CSV(CommaSeparatedValues)则是一种以逗号分隔的文本文件格式,常用于数据的导入和导出。在处理数据时,有时需要将XML数据转换为CSV格式以便于分析和处理。Python作为一种功能强大

使用PHP将XML数据导入数据库引言:在开发中,我们经常需要将外部数据导入到数据库中进行进一步的处理和分析。而XML作为一种常用的数据交换格式,也经常被用来存储和传输结构化数据。本文将介绍如何使用PHP将XML数据导入数据库。步骤一:解析XML文件首先,我们需要解析XML文件,提取出需要的数据。PHP提供了几种解析XML的方式,其中最常用的是使用Simple

Python实现XML和JSON之间的转换导语:在日常的开发过程中,我们常常需要将数据在不同的格式之间进行转换。XML和JSON是常见的数据交换格式,在Python中,我们可以使用各种库来实现XML和JSON之间的相互转换。本文将介绍几种常用的方法,并附带代码示例。一、XML转JSON在Python中,我们可以使用xml.etree.ElementTree模

使用Python处理XML中的错误和异常XML是一种常用的数据格式,用于存储和表示结构化的数据。当我们使用Python处理XML时,有时可能会遇到一些错误和异常。在本篇文章中,我将介绍如何使用Python来处理XML中的错误和异常,并提供一些示例代码供参考。使用try-except语句捕获XML解析错误当我们使用Python解析XML时,有时候可能会遇到一些

Python解析XML中的特殊字符和转义序列XML(eXtensibleMarkupLanguage)是一种常用的数据交换格式,用于在不同系统之间传输和存储数据。在处理XML文件时,经常会遇到包含特殊字符和转义序列的情况,这可能会导致解析错误或者误解数据。因此,在使用Python解析XML文件时,我们需要了解如何处理这些特殊字符和转义序列。一、特殊字符和
