LINQ到XML提供易于访问所有的LINQ功能类似于标准查询操作,编程接口等。 集成在.NET框架的LINQ to XML也使得物尽其用的.NET框架的功能像调试,编译时检查,强类型。
LINQ 到 XML介绍
虽然使用LINQ 到 XML,加载XML文档到内存容易,更容易被查询和修改文档。另外,也可以保存在现有的存储器磁盘的XML文档,并对其进行序列化。它省去了一个开发人员学习XML查询语言这是有点复杂的。
LINQ到XML有它在System.Xml.Linq的命名。这是过去19个必要的类使用XML。这些类如以下所示。
- XAttribute
- XCData
- XComment
- XContainer
- XDeclaration
- XDocument
- XDocumentType
- XElement
- XName
- XNamespace
- XNode
- XNodeDocumentOrderComparer
- XNodeEqualityComparer
- XObject
- XObjectChange
- XObjectChangeEventArgs
- XObjectEventHandler
- XProcessingInstruction
- XText
使用LINQ读取XML文件
C#
using System; using System.Collections.Generic; using System.Linq; using System.Xml.Linq; namespace LINQtoXML { class ExampleOfXML { static void Main(string[] args) { string myXML = @"<Departments> <Department>Account</Department> <Department>Sales</Department> <Department>Pre-Sales</Department> <Department>Marketing</Department> </Departments>"; XDocument xdoc = new XDocument(); xdoc = XDocument.Parse(myXML); var result = xdoc.Element("Departments").Descendants(); foreach (XElement item in result) { Console.WriteLine("Department Name - " + item.Value); } Console.WriteLine("\nPress any key to continue."); Console.ReadKey(); } } }
VB
Imports System.Collections.Generic Imports System.Linq Imports System.Xml.Linq Module Module1 Sub Main(ByVal args As String()) Dim myXML As String = "<Departments>" & vbCr & vbLf & "<Department>Account</Department>" & vbCr & vbLf & "<Department>Sales</Department>" & vbCr & vbLf & "<Department>Pre-Sales</Department>" & vbCr & vbLf & "<Department>Marketing</Department>" & vbCr & vbLf & "</Departments>" Dim xdoc As New XDocument() xdoc = XDocument.Parse(myXML) Dim result = xdoc.Element("Departments").Descendants() For Each item As XElement In result Console.WriteLine("Department Name - " + item.Value) Next Console.WriteLine(vbLf & "Press any key to continue.") Console.ReadKey() End Sub End Module
当C#或VB的上述代码被编译和执行时,它产生了以下结果:
Department Name - Account Department Name - Sales Department Name - Pre-Sales Department Name - Marketing Press any key to continue.
添加新节点
C#
using System; using System.Collections.Generic; using System.Linq; using System.Xml.Linq; namespace LINQtoXML { class ExampleOfXML { static void Main(string[] args) { string myXML = @"<Departments> <Department>Account</Department> <Department>Sales</Department> <Department>Pre-Sales</Department> <Department>Marketing</Department> </Departments>"; XDocument xdoc = new XDocument(); xdoc = XDocument.Parse(myXML); //Add new Element xdoc.Element("Departments").Add(new XElement("Department", "Finance")); //Add new Element at First xdoc.Element("Departments").AddFirst(new XElement("Department", "Support")); var result = xdoc.Element("Departments").Descendants(); foreach (XElement item in result) { Console.WriteLine("Department Name - " + item.Value); } Console.WriteLine("\nPress any key to continue."); Console.ReadKey(); } } }
VB
Imports System.Collections.Generic Imports System.Linq Imports System.Xml.Linq Module Module1 Sub Main(ByVal args As String()) Dim myXML As String = "<Departments>" & vbCr & vbLf & "<Department>Account</Department>" & vbCr & vbLf & "<Department>Sales</Department>" & vbCr & vbLf & "<Department>Pre-Sales</Department>" & vbCr & vbLf & "<Department>Marketing</Department>" & vbCr & vbLf & "</Departments>" Dim xdoc As New XDocument() xdoc = XDocument.Parse(myXML) xdoc.Element("Departments").Add(New XElement("Department", "Finance")) xdoc.Element("Departments").AddFirst(New XElement("Department", "Support")) Dim result = xdoc.Element("Departments").Descendants() For Each item As XElement In result Console.WriteLine("Department Name - " + item.Value) Next Console.WriteLine(vbLf & "Press any key to continue.") Console.ReadKey() End Sub End Module
当C#或VB的上述代码被编译和执行时,它产生了以下结果:
Department Name - Support Department Name - Account Department Name - Sales Department Name - Pre-Sales Department Name - Marketing Department Name - Finance Press any key to continue.
删除特定节点
C#
using System; using System.Collections.Generic; using System.Linq; using System.Xml.Linq; namespace LINQtoXML { class ExampleOfXML { static void Main(string[] args) { string myXML = @"<Departments> <Department>Support</Department> <Department>Account</Department> <Department>Sales</Department> <Department>Pre-Sales</Department> <Department>Marketing</Department> <Department>Finance</Department> </Departments>"; XDocument xdoc = new XDocument(); xdoc = XDocument.Parse(myXML); //Remove Sales Department xdoc.Descendants().Where(s =>s.Value == "Sales").Remove(); var result = xdoc.Element("Departments").Descendants(); foreach (XElement item in result) { Console.WriteLine("Department Name - " + item.Value); } Console.WriteLine("\nPress any key to continue."); Console.ReadKey(); } } }
VB
Imports System.Collections.Generic Imports System.Linq Imports System.Xml.Linq Module Module1 Sub Main(args As String()) Dim myXML As String = "<Departments>" & vbCr & vbLf & "<Department>Support</Department>" & vbCr & vbLf & "<Department>Account</Department>" & vbCr & vbLf & "<Department>Sales</Department>" & vbCr & vbLf & "<Department>Pre-Sales</Department>" & vbCr & vbLf & "<Department>Marketing</Department>" & vbCr & vbLf & "<Department>Finance</Department>" & vbCr & vbLf & "</Departments>" Dim xdoc As New XDocument() xdoc = XDocument.Parse(myXML) xdoc.Descendants().Where(Function(s) s.Value = "Sales").Remove() Dim result = xdoc.Element("Departments").Descendants() For Each item As XElement In result Console.WriteLine("Department Name - " + item.Value) Next Console.WriteLine(vbLf & "Press any key to continue.") Console.ReadKey() End Sub End Module
当C#或VB的上述代码被编译和执行时,它产生了以下结果:
Department Name - Support Department Name - Account Department Name - Pre-Sales Department Name - Marketing Department Name - Finance Press any key to continue.
上一篇:
LINQ Dataset(数据集)
下一篇:
LINQ实体