美文网首页程序员C#
XElement XML操作

XElement XML操作

作者: 满苑繁花 | 来源:发表于2019-02-26 14:21 被阅读44次

之前做的项目中有很多对xml文件操作,对XElement基本操作总结一下。

1.创建并添加节点

如果要创建非默认编码方式的xml文件,可以直接在创建时声明:XDocument xml = new XDocument(new XDeclaration("1.0", "utf-8", null));
或后续添加:xml.Add(new XDeclaration("1.0", "utf-8", null));

XDocument xml = new XDocument();  
xml.Add(new XDeclaration("1.0", "utf-8", null)); //声明编码方式
var Task = new XElement("Task", new XAttribute("ID", 1),
                        new XElement("TaskName", "Task1"),
                        new XElement("Class", "Class1", new XAttribute("ID", 1)),
                        new XElement("Class", "Class2", new XAttribute("ID", 2)));  //新建节点
Task.Add(new XElement("Frequency", "每月"));  //添加子节点
XElement dp = new XElement("DataPath", "DataPath2");
dp.Add(new XAttribute("ID", 2)); //添加属性
Task.Add(dp);
dp.AddBeforeSelf(new XElement("DataPath", "DataPath1",new XAttribute("ID", 1))); //在当前节点之前插入节点
dp.AddAfterSelf(new XElement("DataPath", "DataPath3", new XAttribute("ID", 3))); //在当前节点之后插入节点
 xml.Add(Task);
xml.Save($@"C:\Config\Tasks\Task1.xml");  //保存文件到指定路径

生成的xml文件为:

<?xml version="1.0" encoding="utf-8" ?>
<Task ID="1">
  <TaskName>Task1</TaskName>
  <Class ID="1">Class1</Class>
  <Class ID="2">Class2</Class>
  <Frequency>每月</Frequency>
   <DataPath ID="1">DataPath1</DataPath>
  <DataPath ID="2">DataPath2</DataPath>
  <DataPath ID="3">DataPath3</DataPath>
</Task>

2.读取xml文件

XDocument xml= XDocument.Load($@"C:\Config\Tasks\Task1.xml");

3.遍历及查找节点

查找节点经常用到的方法有Descendants()和Elements()。两者的区别是:Descendants()方法会一直向下遍历查找直到没有子节点,Elements()只会查找当前节点的子节点,不会向下遍历。

var xes1 = xml.Descendants(); //查找所有节点
xes1.ForEach(xe =>
{
    ...//遍历到的节点操作
});
 var xes2 = xml.Elements(); //查找当前节点所有子节点
var xes3= xml.Descendants("Class"); //查找所有Class节点
var xes4 = xml.Elements("Class");//查找当前节点所有Class子节点
var xes5= xml.Elements().Elements("Class"); //查找当前节点所有子节点下Class子节点
var xe1=xml.Element("Task").Element("Class"); //查找Task节点下第一个Class子节点
var xe2 = xml.Descendants("Class").Where(xe => xe.Attribute("ID").Value == "1"); //查找ID=1的Class节点
var xe3 = xml.Elements().Elements("Class").Where(xe=>xe.Attribute("ID").Value=="1");

![FNPDSJMB]T]0)(_CH`}1.png

4.修改节点

修改后记得要保存,不然等于没改(手动摊手)。

xml.Element("Task").Element("TaskName").Value="TaskUpDate"; //修改节点值
xml.Element("Task").SetAttributeValue("ID",2 );
xml.Save($@"C:\Config\Tasks\Task1.xml");  

修改后的xml文件为:

<?xml version="1.0" encoding="utf-8" ?>
<Task ID="2">
  <TaskName>TaskUpDate</TaskName>
  ...
</Task>

5.删除节点

查到到对应节点使用Remove()方法删除。

xml.Descendants("Class").FirstOrDefault()?.Remove(); //删除第一个Class元素

相关文章

  • XElement XML操作

    之前做的项目中有很多对xml文件操作,对XElement基本操作总结一下。 1.创建并添加节点 如果要创建非默认编...

  • 操作xml

    目的:在已有的xml文件下将子节点polygon删除,并基于其中数据生成新的节点bndbox。 import x...

  • java XML解析——DOM方式

    参照:XML解析——DOM方式Java文件操作①——XML文件的读取

  • 2018-07-22

    xml入门 xml概述 xml的基本概念/应用场景和优势 xml文档规则 命名空间 xpath语言详解 操作xml...

  • JDOM 操作 XML

    XML简介 可扩展标记语言——eXtensible Markup Language 用户可以自己定义语言标记,只要...

  • Groovy Xml 操作

    MarkupBuilder 创建xml文档 参考:https://www.ibm.com/developerwo...

  • scala XML操作

    http://blog.csdn.net/lovehuangjiaju/article/details/47682...

  • python 操作xml

    xml.etree.ElementTree模块(简称 ET) 1.加载模块 xml.etree.cElementT...

  • xml

    Menu xml定义 创建xml文件 xml基本操作(遍历,打印tag、属性和text) 修改Element内容 ...

  • Jsp(五)

    XML 标签 JSTL XML标签库提供了创建和操作XML文档的标签。引用XML标签库的语法如下: 在使用xml标...

网友评论

    本文标题:XElement XML操作

    本文链接:https://www.haomeiwen.com/subject/huwoeqtx.html