c# XElement XML操作总结

c# XElement XML操作总结

 

 

以前也操作过xml,但是都是简单的功能,要么就是创建一个xml,要么就是从现有的xml读取。也记录了相关的操作,文章为:c# 读写xml文件操作。但最近的项目需要对相关的xml内容进行相关的操作,如添加、删除等。所以在这里对本次项目关于xml的测试大体总结一下。

测试主要功能有:
1.读取xml
2.遍历xml
3.添加元素
4.查找元素
5.修改元素
6.删除元素
7.创建xml

主要使用的类为XElement。使用的xml为

复制代码
<?xml version="1.0" encoding="utf-8"?>
<Books>
  <Book>
    <Title>图书1</Title>
    <Author>作者1</Author>
  </Book>
  <Book>
    <Title>图书2</Title>
    <Author>作者2</Author>
  </Book>
  <Book>
    <Title>图书3</Title>
    <Author>作者3</Author>
  </Book>
</Books>
复制代码


使用的文件路径

private readonly string _path = string.Format("{0}\\test.xml", Environment.CurrentDirectory);

 

1.读取xml

XElement file = XElement.Load(_path);
textBox1.Text = file + Environment.NewLine;

2.遍历xml

textBox1.Clear();
XElement file = XElement.Load(_path);
foreach (XElement book in file.Descendants("Book"))
{
    XElement title = book.Element("Title");
    XElement author = book.Element("Author");
    textBox1.AppendText(string.Format("{0}:{1}", title.Value, author.Value) + Environment.NewLine);
}

3.添加元素

XElement file = XElement.Load(_path);
textBox1.Text = file + Environment.NewLine;
var node = new XElement("Book", new XElement("Title", "图书3"), new XElement("Author", "作者3"));
file.Add(node);
textBox1.Text = file.ToString();

4.查找元素

XElement file = XElement.Load(_path);
XElement book1 = file.Descendants("Book")
    .Where(x => x.Element("Title").Value == "图书1").SingleOrDefault();
textBox1.Text = book1.ToString();

5.修改元素

XElement file = XElement.Load(_path);
XElement element = file.Descendants("Book")
    .Where(x => x.Element("Title").Value == "图书1")
    .SingleOrDefault();
element.Element("Title").Value = "图书";
element.Element("Author").Value = "作者";
textBox1.Text = file.ToString();

6.删除元素

XElement file = XElement.Load(_path);
file.Descendants("Book")
    .Where(x => x.Element("Title").Value == "图书1")
    .SingleOrDefault().Remove();
textBox1.Text = file.ToString();

7.创建xml
msdn 官方提供的代码。

复制代码
var contacts =
    new XElement("Contacts",
                    new XElement("Contact",
                                new XElement("Name", "Patrick Hines"),
                                new XElement("Phone", "206-555-0144"),
                                new XElement("Address",
                                            new XElement("Street1", "123 Main St"),
                                            new XElement("City", "Mercer Island"),
                                            new XElement("State", "WA"),
                                            new XElement("Postal", "68042")
                                    )
                        )
        );
textBox1.Text = contacts.ToString();
复制代码

下载测试代码:XMLTest

 

 

posted @   s7ven  阅读(10735)  评论(1编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示