C#操作XML
Posted 程序员软件
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#操作XML相关的知识,希望对你有一定的参考价值。
第一时间关注推送的软件内容
类名 | 说明 |
XmlNode | 这个类表示文档的一个节点,它是许多类的基类。如果这个节点表示XML文档的根,就可以从它导航文档任意位置。 |
XmlDocument | 扩展了XmlNode类,但通常是使用XML的第一个对象,因为这个类用于加载磁盘或其他地方的数据,并在这些位置保存数据 |
XmlElement | 表示XML文档的一个元素。它派生于XmlLinkedNode,XmlLinkedNode派生于XmlNode |
XmlAttribute | 表示一个特性,与XmlDocument类一样,它也派生于XmlNode类 |
XmlText | 表示开始标记于结束标记之间的文本 |
XmlComment | 表示一种特殊的类型的节点,这种节点不是文档的一部分,但位阅读器提供文档各部分信息 |
XmlNodeList | 表示一个节点的集合 |
如何创建XML文档(三种方法)
第一种:
XmlDocument xmlDoc = new XmlDocument();
XmlDeclaration Declaration = xmlDoc.CreateXmlDeclaration("1.0", "GBK", null);
xmlDoc.AppendChild(Declaration);
XmlNode testNode = xmlDoc.CreateElement("test");
XmlNode WeChatNode = xmlDoc.CreateElement("WeChat");
XmlAttribute name = xmlDoc.CreateAttribute("Name");
name.Value = "chengxuyuanruanjian";
//xml节点附件属性
WeChatNode.Attributes.Append(Name);
testNode.AppendChild(WeChatNode);
xmlDoc.AppendChild(testNode);
xmlDoc.Save(@"D:\程序员软件\test.xml");
结果:
<?xml version="1.0" encoding="GBK"?>
<test>
<WeChat Name="chengxuyuanruanjian" />
</test>
第二种:
XmlDocument xmlDoc = new XmlDocument();
XmlDeclaration Declaration= xmlDoc.CreateXmlDeclaration("1.0", "GBK", null);
xmlDoc.AppendChild(Declaration);
XmlElement test= xmlDoc.CreateElement("test");
xmlDoc.AppendChild(test);
XmlNode demo= xmlDoc.CreateElement("demo");
test.AppendChild(demo);
XmlElement WeChat= doc.CreateElement("WeChat ");
WeChat.SetAttribute("Name", "chengxuyuanruanjian");
WeChat.SetAttribute("ID", "zhuaizhuaihenguai");
WeChat.InnerText = "程序员软件";
demo.AppendChild(WeChat);
xmlDoc.Save(@"d:\程序员软件\test1.xml");
结果:
<?xml version="1.0" encoding="GBK"?>
<test>
<demo>
<WeChat Name="chengxuyuanruanjian" ID="zhuaizhuaihenguai">程序员软件</WeChat>
</demo>
</test>
第三种:
XmlTextWriter xmlWriter;
string strFilename = @"d:\程序员软件\test2.xml";
xmlWriter = new XmlTextWriter(strFilename, "GBK");
xmlWriter.Formatting = Formatting.Indented;
xmlWriter.WriteStartDocument();
xmlWriter.WriteStartElement("test");
xmlWriter.WriteStartElement("demo");
xmlWriter.WriteAttributeString("ID", "chengxuyuanruanjian");
xmlWriter.WriteAttributeString("name", "程序员软件");
xmlWriter.WriteStartElement("author");
xmlWriter.WriteString("拽拽很乖");
xmlWriter.WriteEndElement();
xmlWriter.WriteEndElement();
xmlWriter.WriteEndElement();
xmlWriter.Close();
结果:
XML添加(两种方法)
第一种:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@"d:\程序员软件\test2.xml");
//查询
XmlNode test= xmlDoc.SelectSingleNode("test");
XmlElement demoXML= xmlDoc.CreateElement("demo");
demoXML.SetAttribute("ID", "MYchengxuyuanruanjian");
demoXML.SetAttribute("name", "程序员软件1");
XmlElement titleXML= xmlDoc.CreateElement("title");
titleXML.InnerText = "C#操作XML添加";
demoXML.AppendChild(titleXML);
XmlElement authorXML= xmlDoc.CreateElement("author");
authorXML.InnerText = "拽拽很乖";
demoXML.AppendChild(authorXML);
test.AppendChild(demoXML);
xmlDoc.Save(@"d:\程序员软件\test2.xml");
第二种:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@"d:\程序员软件\test2.xml");
XmlNode test= xmlDoc.SelectSingleNode("test");
XmlElement demoXML= xmlDoc.CreateElement("demo");
demoXML.SetAttribute("ID", "MYchengxuyuanruanjian");
demoXML.SetAttribute("name", "程序员软件1");
XmlElement title= xmlDoc.CreateElement("title");
XmlElement author= xmlDoc.CreateElement("author");
XmlText title = xmlDoc.CreateTextNode("C#操作XML添加");
XmlText author = xmlDoc.CreateTextNode("拽拽很乖");
title.AppendChild(title);
author.AppendChild(author);
demoXML.AppendChild(title);
demoXML.AppendChild(author);
test.AppendChild(demoXML);
xmlDoc.Save(@"d:\程序员软件\test2.xml");
结果:
<demo ID="MYchengxuyuanruanjian" name="程序员软件1">
<title>C#操作XML添加</title>
<author>拽拽很乖</author>
</demo>
</test>
XML修改节点的值
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@"d:\程序员软件\test2.xml");
XmlNodeList testList = xmlDoc.SelectSingleNode("test").ChildNodes;
foreach (XmlNode xn in testList )
{
XmlElement xe = (XmlElement)xn;//转换为XmlElement类型
if (xe.GetAttribute("ID") == "chengxuyuanruanjian")
{
xe.SetAttribute("ID", "chengxu");
XmlNodeList nls = xe.ChildNodes;
foreach (XmlNode xn1 in nls)
{
XmlElement xe2 = (XmlElement)xn1;//转换类型
if (xe2.Name == "author")
{
xe2.InnerText = "拽拽";/
}
}
}
}
xmlDoc.Save(@"d:\程序员软件\test2.xml");
结果为:
<demo ID="MYchengxuyuanruanjian" name="程序员软件1">
<title>C#操作XML添加</title>
<author>拽拽很乖</author>
</demo>
</test>
删除节点
删除节点的某一个属性或某个子节点。
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@"d:\程序员软件\test2.xml");
XmlNodeList testList = xmlDoc.SelectSingleNode("test").ChildNodes;
foreach (XmlNode xn in testList )
{
XmlElement xe = (XmlElement)xn;//转换为XmlElement类型
if (xe.GetAttribute("ID") == "chengxuyuanruanjian")
{
xe.RemoveAttribute("ID")
XmlNodeList nls = xe.ChildNodes;
foreach (XmlNode xn1 in nls)
{
XmlElement xe2 = (XmlElement)xn1;//转换类型
if (xe2.Name == "author")
{
xe.RemoveChild(xe2);
}
}
}
}
xmlDoc.Save(@"d:\程序员软件\test2.xml");
结果:
<demo ID="MYchengxuyuanruanjian" name="程序员软件1">
<title>C#操作XML添加</title>
<author>拽拽很乖</author>
</demo>
</test>
删除一个节点所有内容
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@"d:\程序员软件\test2.xml");
XmlElement root=xmlDoc.DocumentElement;
XmlNodeList testList = xmlDoc.SelectSingleNode("test").ChildNodes;
foreach (XmlNode xn in testList )
{
XmlElement xe = (XmlElement)xn;
if (xe.GetAttribute("ID") == "MYchengxuyuanruanjian")
{
root.RemoveChild(xe);
}
}
xmlDoc.Save(@"d:\程序员软件\test2.xml");
结果:
</test>
更多知识关注"程序员软件",喜欢文章就关注、点赞、转发吧!
以上是关于C#操作XML的主要内容,如果未能解决你的问题,请参考以下文章