1. 引入 命名空间
using System.Xml.Linq;
2. Xml的结构
<?xml version="1.0" encoding="utf-8"?>
<Products>
<Product Id="1">
<Name>HTC One</Name>
<Price>4856.23</Price>
<Count>100</Count>
</Product>
<Product Id="2">
<Name>Iphone 6 Update</Name>
<Price>5856.23</Price>
<Count>655</Count>
</Product>
<Product Id="3">
<Name>Lenno K800</Name>
<Price>3856.23</Price>
<Count>898</Count>
</Product>
<Product Id="4">
<Name>HuaWei P7</Name>
<Price>2856.23</Price>
<Count>1000</Count>
</Product>
<Product Id="5">
<Name>MI 4</Name>
<Price>1856.23</Price>
<Count>1</Count>
</Product>
</Products>
3. 后台程序
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
namespace XMLLinq
{
class Program
{
static void Main(string[] args)
{
string Path = AppDomain.CurrentDomain.BaseDirectory;
string xmlPath = System.IO.Path.Combine(Path, "../../Product.xml");
XElement xmlDoc = XElement.Load(xmlPath);
//1.取所有节点的数据
IEnumerable<XElement> xmlCollection = xmlDoc.Elements("Product");
Console.WriteLine("Count:"+xmlCollection.Count());
var linq = from x in xmlCollection select new {Name=x.Element("Name").Value,Price = x.Element("Price").Value,Count=x.Element("Count").Value};
foreach(var e in linq){
Console.WriteLine("Name={0},Price={1},Count={2}",e.Name,e.Price,e.Count);
}
//2. 取某一个节点
Console.WriteLine("One Record:");
var oneObj = xmlCollection.Where(x => x.Attribute("Id").Value.Equals("2")).First();
Console.WriteLine("Name={0},Price={1},Count={2}", oneObj.Element("Name").Value, oneObj.Element("Price").Value, oneObj.Element("Count").Value);
//3. 新增一个节点
XElement newElement = new XElement(
"Product",
new XAttribute("Id", xmlCollection.Count()+1),
new XElement("Name","new Product"),
new XElement("Price",new decimal(100)),
new XElement("Count",200)
);
xmlDoc.Add(newElement);
xmlDoc.Save(xmlPath);
//修改节点的值
Console.WriteLine("Upldate Record:");
var UpdateObj = xmlCollection.Where(x => x.Attribute("Id").Value.Equals("2")).First();
UpdateObj.SetElementValue("Name", "Iphone 6 Update");
xmlDoc.Save(xmlPath);
//删除一个节点
Console.WriteLine("Delete Record:");
var deleteObj = xmlCollection.Where(x => x.Attribute("Id").Value.Equals("6")).FirstOrDefault();
if(null != deleteObj){
deleteObj.Remove();
xmlDoc.Save(xmlPath);
}
Console.ReadLine();
}
}
}