C# 深入了解 Linq 对 XML 的操作

本文介绍了C#中使用LINQ to XML进行XML文档的操作,包括加载、查询、创建、更改、删除节点及处理命名空间的方法,并通过实例展示了其用法。
摘要由CSDN通过智能技术生成

前言

       W3C制定了XML DOM标准,.Net为了支持W3C的标准,从1.1版本开始就引入了XmlDocument类。

      自从 formwork 3.5发布后 .Net又引入了LINQ 。

       于是LINQ to XML也就应运而生,所以在.Net中,不仅可以用W3C XML DOM标准,还可以使用LINQ to XML来操作XML文档。


下面就来简单介绍一下如何使用LINQ to XML。



(一) 加载

加载XML比较常用的有三种方法:

public static XDocument Load(string uri);

public static XDocument Load(Stream stream);

public static XDocument Parse(string text);

下面代码演示如何使用它们:

复制代码
// public static XDocument Load(string uri); 
// uri 即为要装载的文件名 
var doc1 = XDocument.Load("XMLFile1.xml"); 


 

// public static XDocument Load(Stream stream); 
Entity retrievedAnnotation = _orgService.Retrieve("annotation" 
    , new Guid("C1B13C7F-F430-E211-8FA1-984BE1731399"), new ColumnSet(true));                                
byte[] fileContent = Convert.FromBase64String(retrievedAnnotation["documentbody"].ToString()); 
MemoryStream ms = new MemoryStream(fileContent);                
XDocument xDoc = XDocument.Load(ms); 


// public static XDocument Parse(string text); 
string str = @"<Customers><Customer id='01' city='Beijing' country='China' name='Lenovo'/></Customers>"; 
var doc2 = XDocument.Parse(str); 
复制代码

 

(二) 查询

我们以下面的XML文档为例:

复制代码
<?xml version="1.0" encoding="utf-8" ?> 
<Customers> 
  <Customer id="01" city="Beijing" country="China">Lenovo 
    <Order OrderID="1001" Freight="36.00" /> 
    <Order OrderID="1003" Freight="61.50" /> 
  </Customer> 
  <Customer id="02" city="Amsterdam" country="The Netherlands">Shell 
    <Order OrderID="1002" Freight="56.65" /> 
    <Order OrderID="1004" Freight="65.50" /> 
    <Order OrderID="1005" Freight="100.50" /> 
  </Customer> 
</Customers>
复制代码

1. 返回所有Customer 节点:

var result = from customer in doc1.Descendants("Customer") 
             select customer.Value; 
foreach (var s in result) 
{ 
    Console.WriteLine(s); 
}

输出结果:

Lenovo

Shell

2. 返回id为02并且 city 为 Amsterdam 的customer :

var result = (from customer in doc1.Descendants("Customer") 
              where (string)customer.Attribute("id") == "02
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值