XML文档追加内容,查找(读取)内容 ,删除内容

<>

1>从根节点开始(查找)追加using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Xml;namespace 追加XML{class Program{static void Main(string[] args){//追加XML文档(追加XML文档,有两种情况,第一:这个XML文档可能存在; 第二:这个XML文档可能不存在)XmlDocument doc = new XmlDocument();XmlElement books;if (File.Exists("Books.xml")){//1,如果XML文档存在//既然XML文档已经存在,那么就加载这个XML文档doc.Load("Books.xml");//获取XML文档的根节点 (从根节点开始追加)books = doc.DocumentElement;}else{//2,如果XML文档不存在//既然XML文档不存在,我们首先给这个XML文档添加一个文档描述:<?xml version="1.0" encoding="utf-8"?>XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);doc.AppendChild(dec);//创建这个XML文档的根节点books = doc.CreateElement("Books");doc.AppendChild(books);}//上面的步骤做好后,现在就开始给文档追加子节点了;XmlElement book = doc.CreateElement("Book");books.AppendChild(book);XmlElement name = doc.CreateElement("Name");name.InnerText = "C#编程宝典";book.AppendChild(name);XmlElement price = doc.CreateElement("Price");price.InnerText = "108¥";book.AppendChild(price);XmlElement des = doc.CreateElement("Des");des.InnerText = "太难了,看不懂";book.AppendChild(des);doc.Save("Books.xml");Console.WriteLine("保存成功");Console.ReadKey();}}}

2>从指定节点开始(查找)追加

首先我在D盘下有一个叫Order.xml的文件,这里演示在这个xml文件中查找根节点和Items节点下的内容

using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Xml;namespace 给XML文档的指定节点追加内容{class Program{static void Main(string[] args){XmlDocument doc = new XmlDocument();if (File.Exists("D:/Order.xml")){doc.Load("D:/Order.xml");//————-获取指定节点下的所有子节点的值//获取Order这个节点XmlNode orderNode = doc.SelectSingleNode("//Order");//获取Order这个节点下的所有子节点XmlNodeList orderSubNodes = orderNode.ChildNodes;foreach (XmlNode orderSubNode in orderSubNodes){Console.WriteLine(orderSubNode.InnerText); //注意这里是输出Order所有子节点的文本内容,因为Items这个子节点本身没有文本内容(不过它有自己的子节点),所以这里仅仅输出了:张学友 dd00001 ;如果要输出Items的内容可以使用:Console.WriteLine(orderSubNode.InnerXml); 这样就输出了:张学友 dd00001 <OrderItem Name="手机" Count="1" /><OrderItem Name="电脑" Count="2" />}//————-获取指定节点下的所有子节点的属性值,注意是“属性值”//获取Items这个节点 (SelectSingleNode是获取符合括号中的Xpath表达式的第一个节点,这里是取唯一的意思)XmlNode itemsNode = doc.SelectSingleNode("/Order/Items"); //这段也可以这么写XmlNode itemsNode = doc.SelectSingleNode("/Order/Items");表示选择<Order>标签下的<Items>标签//获取Items这个节点下的所有子节点XmlNodeList itemsSubNodes = itemsNode.ChildNodes;foreach (XmlNode itemsSubNode in itemsSubNodes){Console.WriteLine(itemsSubNode.Attributes["Name"].Value + itemsSubNode.Attributes["Count"].Value);}//————-获取指定节点下的所有子节点的属性值,代码优化一下也可以//因为Items下面有多个相同的<OrderItem>标签,不同的仅仅是<OrderItem>标签的属性值不同而已,那么我们就直接获取所有的<OrderItem>标签,进行遍历,然后取他们的属性就就可以了//获取所有的OrderItem标签XmlNodeList orderItems = doc.SelectNodes("//OrderItem");//遍历foreach (XmlNode orderItem in orderItems){Console.WriteLine(orderItem.Attributes["Name"].Value + orderItem.Attributes["Count"].Value);}}else{Console.WriteLine("找不到这个文件");}Console.ReadKey();}}}

XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。

下面列出了最有用的路径表达式:

表达式描述

nodename选取此节点的所有子节点。

/从根节点选取。

//从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。

.选取当前节点。

..选取当前节点的父节点。

@选取属性。

实例

在下面的表格中,我们已列出了一些路径表达式以及表达式的结果:

路径表达式结果

bookstore选取 bookstore 元素的所有子节点。

/bookstore

选取根元素 bookstore。

注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径!

bookstore/book选取属于 bookstore 的子元素的所有 book 元素。

//book选取所有 book 子元素,而不管它们在文档中的位置。

bookstore//book选择属于 bookstore 元素的后代的所有 book 元素,而不管它们位于 bookstore 之下的什么位置。

//@lang选取名为 lang 的所有属性。

3>XML文档节点的删除我想,这就是旅行的真义吧。

XML文档追加内容,查找(读取)内容 ,删除内容

相关文章:

你感兴趣的文章:

标签云: