C# Xml Linq XDocument 基本操作
2020-12-13 15:13
标签:des style blog http io color ar os 使用 person.xml C# Xml Linq XDocument 基本操作 标签:des style blog http io color ar os 使用 原文地址:http://www.cnblogs.com/han1982/p/4072571.htmlxml version="1.0" encoding="utf-8"?>
MyP>
P1>
Person id="cz001">
Name>张三Name>
Age>18Age>
Person>
Person id="cz002">
Name>李四Name>
Age>19Age>
Person>
Person id="cz003">
Name>王五Name>
Age>20Age>
Person>
P1>
P2>
Person>
Name>张三2Name>
Age>18Age>
Person>
Person>
Name>李四2Name>
Age>19Age>
Person>
Person>
Name>王五2Name>
Age>20Age>
Person>
P2>
MyP>
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
}
}
}
}
}