自己整理一些常用XmlDocument加载xml文件的使用方法,当忘了的时候方便快速理解。
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
namespace WpfApplication1.com
{
public class XMLLoader
{
private string _xmlUrl = "";
public XMLLoader()
{
string xmlUrl = Directory.GetCurrentDirectory();
xmlUrl += @"\assets\Demo.xml";
_xmlUrl = xmlUrl;
}
public void Load()
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(_xmlUrl);//直接通过路径加载,获取的全部文档内容(包括注释等等。。)
XmlElement rootElement = xmlDoc.DocumentElement;//获取文档的根元素
//XmlNodeList nodeList = rootElement.ChildNodes;//获取根元素下的节点列表
//XmlNodeList nodeList = rootElement.GetElementsByTagName("persion");//通过元素名获取对应的元素列表
//XmlNode node = nodeList[0];//节点列表的第一个节点
//XmlNode node = rootElement["persion"];//通过元素名获取第一个匹配的节点
//XmlAttributeCollection attributeCol = node.Attributes;//当前节点的属性列表
//XmlAttribute xmlAttribute = attributeCol[0];//通过索引值获取第一个属性
//XmlAttribute xmlAttribute = attributeCol[id];//通过属性名获取对应属性
}
public void Load2()
{
XmlDocument xmlDoc = new XmlDocument();
//通过配置xml读取器加载
XmlReaderSettings xmlSetting = new XmlReaderSettings();
xmlSetting.IgnoreComments = true;//忽略注释
XmlReader xmlReader = XmlReader.Create(_xmlUrl, xmlSetting);
xmlDoc.Load(xmlReader);//加载
xmlReader.Close();//加载完后必须关闭,不然当保存时会提示该文档正在被使用中
XmlElement rootElement = xmlDoc.DocumentElement;//获取文档的根元素
}
//创建新的xml文件
public void CreateNewXML()
{
string xmlUrl = "assets/test.xml";
XmlDocument xmlDoc = new XmlDocument();
XmlDeclaration declaration = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", null);//创建xml声明
XmlElement rootElement = xmlDoc.CreateElement("root");//创建根元素
XmlComment xmlComment = xmlDoc.CreateComment("我是注释");//创建注释
xmlDoc.AppendChild(declaration);//添加声明
xmlDoc.AppendChild(xmlComment);//添加注释
xmlDoc.AppendChild(rootElement);//添加根元素
//保存
//此xmlUrl如果是test.xml,则默认生成目录是当前应用程序的根目录
//此xmlUrl如果是assets/test.xml,则默认生成目录是当前应用程序的根目录下的assets文件夹内,如果此文件夹不存在则会报错
//保存时如果不存在此xml文件则生成xml文件,如果已存在此xml文件则覆盖此文件
xmlDoc.Save(xmlUrl);
}
public void OnSave()
{
string xmlUrl = "test.xml";
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xmlUrl);//直接通过路径加载,获取的全部文档内容(包括注释等等。。)
XmlElement rootElement = xmlDoc.DocumentElement;
//rootElement.RemoveAll();//删除全部子节点
XmlElement newEle = xmlDoc.CreateElement("people");//创建新元素
newEle.SetAttribute("name","张三");//新元素上添加属性
rootElement.AppendChild(newEle);//在根节点下添加新元素
xmlDoc.Save(_xmlUrl);//保存
}
}
}