c#对xml的操作

Posted lunawzh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#对xml的操作相关的知识,希望对你有一定的参考价值。

 

操作xml可以通过XElement对象,比较方便的使用列举以下几点:

把字符串转变成XElement,保存成xml文件,加载xml文件:

            //把字符串解析成XElement对象
            string str = "<students><student><name>one</name></student><student><name>two</name></student><student><name>three</name></student></students>";
            var xml = XElement.Parse(str);
            //保存文件
            xml.Save("1.xml");
            Console.WriteLine("保存成功");

            //读取文件
            xml = XElement.Load("1.xml");
            Console.WriteLine(xml);

集合创建XElement对象

class Program
    {
        static void Main(string[] args)
        { 
            List<Person> list = new List<Person>()
            {
                new Person(){Id=1,Name="张三"},
                new Person(){Id=2,Name="李四"},
                new Person(){Id=3,Name="王五"},
                new Person(){Id=4,Name="赵六"},
                new Person(){Id=5,Name="钱七"}
            };
            var xml = new XElement("Persons", list.Select(x => new XElement("name",x.Name)));
            Console.WriteLine(xml);
        }
    }
    public class Person
    {
        public int Id { get; set; }
        public string Name { get; set; }

    }

 

2 、使用lamda查询xml值

xml文件如下:

<?xml version="1.0" encoding="utf-8" ?>
<AOnlineOrg>
  <eSales>
    <Member SortNo="1">
      <Login>GUOXIN</Login>
      <PositionID>1-25ISRB</PositionID>
      <UserID>1-25ISRQ</UserID>
      <BU>ICSF</BU>
    </Member>
    <Member SortNo="2">
      <Login>LIUXIANG</Login>
      <PositionID>1-196945</PositionID>
      <UserID>1-19694A</UserID>
      <BU>ICSF</BU>
    </Member>
    <Member SortNo="3">
      <Login>QINYANG</Login>
      <PositionID>1-10DAMN</PositionID>
      <UserID>1-KJ3IA</UserID>
      <BU>ICSF</BU>
    </Member>
    <Member SortNo="4">
      <Login>XIAOCANFU</Login>
      <PositionID>1-FKZUJF</PositionID>
      <UserID>1-FKZUB5</UserID>
      <BU>ICSF</BU>
    </Member>
    <Member SortNo="5">
      <Login>XIAOHUAHU</Login>
      <PositionID>1-JWZ3R</PositionID>
      <UserID>1-JWZ4F</UserID>
      <BU>ICSF</BU>
    </Member>
    <Member SortNo="6">
      <Login>MANWEIZHAO</Login>
      <PositionID>1-JDSX2</PositionID>
      <UserID>1-1U5P9V</UserID>
      <BU>IAG</BU>
    </Member>
    <Member SortNo="7">
      <Login>LIJUANNIU</Login>
      <PositionID>1-IABTN</PositionID>
      <UserID>1-1PW39I</UserID>
      <BU>IAG</BU>
    </Member>
    <Member SortNo="8">
      <Login>QUANFANGZHOU</Login>
      <PositionID>1-H1MFS</PositionID>
      <UserID>1-ISATTR</UserID>
      <BU>IAG</BU>
    </Member>
    <Member SortNo="9">
      <Login>FENGYUANLI</Login>
      <PositionID>1-DHZB5</PositionID>
      <UserID>1-DI7M2</UserID>
      <BU>IAG</BU>
    </Member>
  </eSales>
</AOnlineOrg>

上面xml文件保存为1.xml,查找其Member的属性SortNo的值小于3的Login值:

 //加载
            var xml = XElement.Load("1.xml");
            //选择集合
            var list = xml.Descendants("Member");
            //查找xml中Member的属性SortNo的值小于3的Login值
            var arr = list.Where(x => ((int)x.Attribute("SortNo")) < 3).Select(x => x.Element("Login"));
            foreach (var item in arr)
            {
                Console.WriteLine(item);
            }
查找所有Login值
            var xml = XElement.Load("1.xml");

            //查找所有Login值
            foreach (var item in xml.Descendants("Login"))
            {
                Console.WriteLine(item.Value);
            }

 

把xml转成类对象集合

 public class Person
    {
        public int SortNo { get; set; }
        public string Login { get; set; }
        public string PositionID { get; set; }
        public string UserID { get; set; }
        public string BU { get; set; }
    }
            var xml = XElement.Load("1.xml");

            List<Person> list = new List<Person>();
            
            foreach (var item in xml.Descendants("Member"))
            {
                if (item.HasElements)
                {
                    list.Add(new Person
                    {
                        Login = item.Element("Login").Value,
                        PositionID = item.Element("PositionID").Value,
                        UserID = item.Element("UserID").Value,
                        BU = item.Element("BU").Value,
                        SortNo = (int)item.Attribute("SortNo")
                    });
                }
            }
            foreach (var item in list)
            {
                Console.WriteLine(item.Login);
            }

 

以上是关于c#对xml的操作的主要内容,如果未能解决你的问题,请参考以下文章

c#对xml的操作

C#程序员经常用到的10个实用代码片段

C#对XML进行操作(添加修改)

在 C# 中使用字母和数字 (code="BC1") 属性对 XML 进行排序

C#对XML完整操作

C#操作XML的通用方法总结