C# Xml Linq XDocument 基本操作

person.xml

C# Xml Linq XDocument 基本操作
<?xml version="1.0" encoding="utf-8"?>
<MyP>
  <P1>
    <Person id="cz001">
      <Name>张三</Name>
      <Age>18</Age>
    </Person>
    <Person id="cz002">
      <Name>李四</Name>
      <Age>19</Age>
    </Person>
    <Person id="cz003">
      <Name>王五</Name>
      <Age>20</Age>
    </Person>
  </P1>
  <P2>
    <Person>
      <Name>张三2</Name>
      <Age>18</Age>
    </Person>
    <Person>
      <Name>李四2</Name>
      <Age>19</Age>
    </Person>
    <Person>
      <Name>王五2</Name>
      <Age>20</Age>
    </Person>
  </P2>
</MyP>
View Code

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Xml操作
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //读取XML
            System.Xml.Linq.XDocument xdoc = System.Xml.Linq.XDocument.Load("person.xml");
            System.Xml.Linq.XElement xeRoot = xdoc.Root; //根节点 
            System.Xml.Linq.XElement xele = xeRoot.Element("P1").Element("Person"); //子节点
            MessageBox.Show("id=" + xele.Attribute("id").Value);  //cz001
            foreach (var ele in xele.Elements())
            {
                string str = string.Format("Name={0},Value={1}", ele.Name.ToString(), ele.Value);
                MessageBox.Show(str);
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //*读取XML数据加载到treeView1列表中。
            //1、加载person.xml
            System.Xml.Linq.XDocument xdoc = System.Xml.Linq.XDocument.Load("person.xml");
            //2、获取根节点,MyP
            System.Xml.Linq.XElement xeRoot = xdoc.Root;
            //3、先把根节点添加到treeView1上
            TreeNode treeViewRoot = treeView1.Nodes.Add(xeRoot.Name.LocalName);
            //4、开始遍历所有的子节点,使用递归
            LoadTreeNodes(xeRoot, treeViewRoot);


            //*写入XML文件。
            //1、创建XML对象
            System.Xml.Linq.XDocument xdocument = new System.Xml.Linq.XDocument();
            //2、创建跟节点
            System.Xml.Linq.XElement eRoot = new System.Xml.Linq.XElement("根节点");
            //添加到xdoc中
            xdocument.Add(eRoot);
            //3、添加子节点
            System.Xml.Linq.XElement ele1 = new System.Xml.Linq.XElement("子节点1");
            ele1.Value = "内容1";
            eRoot.Add(ele1);
            //4、为ele1节点添加属性
            System.Xml.Linq.XAttribute attr = new System.Xml.Linq.XAttribute("url", "http://www.baidu.com");
            ele1.Add(attr);
            

            //5、快速添加子节点方法
            eRoot.SetElementValue("子节点2", "内容2");

            //6、快速添加属性
            ele1.SetAttributeValue("id", 12);

            //7、最后保存到文件,也可以写入到流中。
            xdocument.Save("123.xml");

        }

        private void LoadTreeNodes(System.Xml.Linq.XElement xeRoot, TreeNode treeViewRoot)
        {
            //把xeRoot下面的所有内容循环绑定treeView上
            foreach (System.Xml.Linq.XElement ele in xeRoot.Elements())
            {
                //判定子根节点下是否还有子节点
                if (ele.Elements().Count() > 0)
                {
                    TreeNode node = treeViewRoot.Nodes.Add(ele.Name.ToString());  //写入Name值
                    //获取节点上的属性方法
                    System.Xml.Linq.XAttribute attr = ele.Attribute("id");
                    if (attr != null)
                    {
                        node.Text += string.Format(" [{0}={1}]", attr.Name, attr.Value);
                    }
                    LoadTreeNodes(ele, node); //遍历循环
                }
                else
                {
                    treeViewRoot.Nodes.Add(ele.Value); //写入节点下的Value
                }
            }
        }
    }
}

 

C# Xml Linq XDocument 基本操作

上一篇:Phoenix的基本命令


下一篇:hosts文件配置及主要作用