C# XML操作 代码大全:读写XML、操作节点
读取XML文件
读取XML文件可以使用XmlDocument
类和XmlReader
类。
- 使用
XmlDocument
类
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("example.xml"); // 加载文件
XmlNodeList nodeList = xmlDoc.SelectNodes("root/node"); // 选择节点
foreach (XmlNode node in nodeList)
{
string name = node.Attributes["name"].Value; // 获取属性
string value = node.InnerText; // 获取文本
}
- 使用
XmlReader
类
XmlReader reader = XmlReader.Create("example.xml");
while (reader.Read()) // 循环读取
{
if (reader.Name == "node" && reader.NodeType == XmlNodeType.Element)
{
string name = reader.GetAttribute("name"); // 获取属性
string value = reader.ReadElementContentAsString(); // 获取文本
}
}
写入XML文件
写入XML文件可以使用XmlDocument
类和XmlWriter
类。
- 使用
XmlDocument
类
XmlDocument xmlDoc = new XmlDocument();
XmlDeclaration xmlDec = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", null);
xmlDoc.AppendChild(xmlDec);
XmlElement root = xmlDoc.CreateElement("root");
XmlAttribute attr = xmlDoc.CreateAttribute("name");
attr.Value = "example";
root.SetAttributeNode(attr); // 添加属性
XmlElement node = xmlDoc.CreateElement("node");
node.InnerText = "Hello,XML";
root.AppendChild(node); // 添加子节点
xmlDoc.AppendChild(root);
xmlDoc.Save("example.xml"); // 保存文件
- 使用
XmlWriter
类
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (XmlWriter writer = XmlWriter.Create("example.xml", settings))
{
writer.WriteStartDocument(); // 写入声明
writer.WriteStartElement("root"); // 写入根节点
writer.WriteAttributeString("name", "example"); // 写入属性
writer.WriteElementString("node", "Hello,XML"); // 写入子节点和文本值
writer.WriteEndElement(); // 结束根节点
writer.WriteEndDocument(); // 结束写入
}
更新XML文件
更新XML文件可以使用XmlDocument
类和XPath
表达式。
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("example.xml");
XmlNode node = xmlDoc.SelectSingleNode("root/node[@name='example']"); // 根据XPath表达式选择节点
if (node != null)
{
node.InnerText = "Hello,XML Updated"; // 更新节点文本值
xmlDoc.Save("example.xml"); // 保存文件
}
删除XML节点
删除XML节点可以使用XmlDocument
类和XPath
表达式。
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("example.xml");
XmlNode root = xmlDoc.SelectSingleNode("root");
XmlNode node = xmlDoc.SelectSingleNode("root/node[@name='example']"); // 根据XPath表达式选择节点
if (node != null)
{
root.RemoveChild(node); // 移除节点
xmlDoc.Save("example.xml"); // 保存文件
}
示例说明
假设有如下XML文件example.xml
:
<?xml version="1.0" encoding="utf-8"?>
<root name="example">
<node name="example">Hello,XML</node>
<node name="test">Hello,XML Again</node>
</root>
- 读取XML文件并获取节点属性和文本值:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("example.xml");
XmlNodeList nodeList = xmlDoc.SelectNodes("root/node");
foreach (XmlNode node in nodeList)
{
string name = node.Attributes["name"].Value;
string value = node.InnerText;
Console.WriteLine(name + ": " + value);
}
输出结果:
example: Hello,XML
test: Hello,XML Again
- 写入XML文件并添加节点和属性:
XmlDocument xmlDoc = new XmlDocument();
XmlDeclaration xmlDec = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", null);
xmlDoc.AppendChild(xmlDec);
XmlElement root = xmlDoc.CreateElement("root");
XmlAttribute attr = xmlDoc.CreateAttribute("name");
attr.Value = "example2";
root.SetAttributeNode(attr);
XmlElement node = xmlDoc.CreateElement("node");
node.InnerText = "Hello,XML2";
root.AppendChild(node);
xmlDoc.AppendChild(root);
xmlDoc.Save("example2.xml");
将生成如下XML文件example2.xml
:
<?xml version="1.0" encoding="utf-8"?>
<root name="example2">
<node>Hello,XML2</node>
</root>
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# XML操作 代码大全(读XML,写XML,更新,删除节点,与dataset结合等)第1/2页 - Python技术站