本篇内容介绍了“C#中XML文件内容增删改查的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
XML是一种可扩展标记语言(EXtensible Markup Language)。
XML是一种很像HTML的标记语言。
XML的设计宗旨是传输数据,而不是显示数据。
XML标签没有被预定义。您需要自行定义标签。
XML被设计为具有自我描述性。
XML是 W3C 的推荐标准。
语法严谨,格式统一,符合标准。
容易与其他系统进行远程交互,数据共享比较方便。
扩展性、弹性、易读性均不佳。
XML文件庞大,文件格式复杂,传输占带宽。
服务器端和客户端解析XML花费较多的资源和时间。
在线xml验证工具
<?xml version="1.0" encoding="utf-8"?>
<books>
<book>
<author>追逐时光者</author>
<title>XML学习教程</title>
<publisher>时光出版社</publisher>
</book>
</books>
转义字符 | 符号 | 名称 |
---|---|---|
& | & | 和号 |
< | < | 小于 |
> | > | 大于 |
' | ' | 省略号 |
" | " | 引号 |
严格地讲,在 XML 中仅有字符 "<"和"&" 是非法的。省略号、引号和大于号是合法的。这时,Xml有两种解决方案来处理这种问题。
CDATA
转义字符
/// <summary>
/// 特殊符号转换为转义字符
/// </summary>
/// <param name="xmlStr"></param>
/// <returns></returns>
public string XmlSpecialSymbolConvert(string xmlStr)
{
return xmlStr.Replace("&", "&").Replace("<", "<").Replace(">", ">").Replace("\'", "'").Replace("\"", """);
}
/// <summary>
/// 创建Xml文件
/// </summary>
public void CreateXmlFile()
{
XmlDocument xmlDoc = new XmlDocument();
//创建类型声明节点
XmlNode node = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", "");
xmlDoc.AppendChild(node);
//创建Xml根节点
XmlNode root = xmlDoc.CreateElement("books");
xmlDoc.AppendChild(root);
XmlNode root1 = xmlDoc.CreateElement("book");
root.AppendChild(root1);
//创建子节点
CreateNode(xmlDoc, root1, "author", "追逐时光者");
CreateNode(xmlDoc, root1, "title", "XML学习教程");
CreateNode(xmlDoc, root1, "publisher", "时光出版社");
//将文件保存到指定位置
xmlDoc.Save("D://xmlSampleCreateFile.xml");
}
/// <summary>
/// 创建节点
/// </summary>
/// <param name="xmlDoc">xml文档</param>
/// <param name="parentNode">Xml父节点</param>
/// <param name="name">节点名</param>
/// <param name="value">节点值</param>
///
public void CreateNode(XmlDocument xmlDoc, XmlNode parentNode, string name, string value)
{
//创建对应Xml节点元素
XmlNode node = xmlDoc.CreateNode(XmlNodeType.Element, name, null);
node.InnerText = value;
parentNode.AppendChild(node);
}
<?xml version="1.0" encoding="utf-8"?>
<books>
<book>
<author>追逐时光者</author>
<title>XML学习教程</title>
<publisher>时光出版社</publisher>
</book>
</books>
这次我们是在上一次新建的XML文件中做操作,在book二级节点下添加一个新的节点名为publishdate(发布时间),该节点的value为2022-03-26。
private static void AppendNode()
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("D://xmlSampleCreateFile.xml");//加载Xml文件
XmlNode root = xmlDoc.SelectSingleNode("books/book");//选择要添加子节点的book节点
//创建一个新的Xml节点元素
XmlNode node = xmlDoc.CreateNode(XmlNodeType.Element, "publishdate", null);
node.InnerText = "2022-03-26";
root.AppendChild(node);//将创建的item子节点添加到items节点的尾部
xmlDoc.Save("D://AppendNodeFile.xml");//保存修改的Xml文件内容
}
<?xml version="1.0" encoding="utf-8"?>
<books>
<book>
<author>追逐时光者</author>
<title>XML学习教程</title>
<publisher>时光出版社</publisher>
<publishdate>2022-03-26</publishdate>
</book>
</books>
这次我们是在第一次新建的XML文件中做操作,把在book二级节点下的author的内容改成:大姚同学
private static void UpdateXml()
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("D://xmlSampleCreateFile.xml");//加载Xml文件
XmlNode xns = xmlDoc.SelectSingleNode("books/book");//查找要修改的节点
XmlNodeList xmlNodeList = xns.ChildNodes;//取出book节点下所有的子节点
foreach (XmlNode xmlNode in xmlNodeList)
{
XmlElement xmlElement = (XmlElement)xmlNode;//将节点转换一下类型
if (xmlElement.Name=="author")//判断该子节点是否是要查找的节点
{
xmlElement.InnerText = "大姚同学";//设置新值
break;
}
}
xmlDoc.Save("D://UpdateXml.xml");//保存修改的Xml文件内容
}
<?xml version="1.0" encoding="utf-8"?>
<books>
<book>
<author>大姚同学</author>
<title>XML学习教程</title>
<publisher>时光出版社</publisher>
</book>
</books>
这次我们是在第一次新建的XML文件中做操作,删除author节点。
private static void DeleteXmlNode()
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("D://xmlSampleCreateFile.xml");//加载Xml文件
XmlNode xns = xmlDoc.SelectSingleNode("books/book");//查找要删除的根节点
#region 删除author节点
var delNode = xmlDoc.SelectSingleNode("books/book/" + "author");
xns.RemoveChild(delNode);
#endregion
xmlDoc.Save("D://DeleteXmlNode.xml");//保存操作后的Xml文件内容
}
这次我们是在第一次新建的XML文件中做操作,清空author节点下的数据。
private static void ClearDataXmlNode()
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("D://xmlSampleCreateFile.xml");//加载Xml文件
XmlNode xns = xmlDoc.SelectSingleNode("books/book");//查找要删除的根节点
#region 清空author节点下的数据
XmlNodeList xmlNodeList = xns.ChildNodes;//取出book节点下所有的子节点
foreach (XmlNode xmlNode in xmlNodeList)
{
XmlElement xmlElement = (XmlElement)xmlNode;//将节点转换一下类型
if (xmlElement.Name == "author")//判断该子节点是否是要查找的节点
{
//清空author节点下的数据
xmlElement.RemoveAll();//删除该节点的全部内容
}
}
#endregion
xmlDoc.Save("D://ClearDataXmlNode.xml");//保存操作后的Xml文件内容
}
“C#中XML文件内容增删改查的方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。