C# 2008 学习笔记 - LINQ to XML
来源:互联网 发布:淘宝有至诚通达快递吗 编辑:程序博客网 时间:2024/05/16 10:24
转自:http://www.cnblogs.com/sunrack/articles/1081714.html
LINQ to XML 可以看作是一个 “better DOM” 编程模型,可以和 System.Xml.dll 程序集中的很多成员交互。
一、命名空间
System.Xml.Linq.dll 程序集定义了三个命名空间:System.Xml.Linq, System.Xml.Schema 和 System.Xml.XPath
最核心的是 System.Xml.Linq, 定义了对应 XML 文档个方面的很多类型
Member of System.Xml.Linq
Meaning in Life
XAttribute
Represents an XML attribute on a given XML element
XComment
Represents an XML comment
XDeclaration
Represents the opening declaration of an XML document
XDocument
Represents the entirety of an XML document
XElement
Represents a given element within an XML document
XName/XNamespace
Provide a very simple manner to define and reference XML namespaces
二、编程方式创建XML文档
以前的 .NET XML编程模型需要使用很多冗长的 DOM API,而 LINQ to XML 则完全可以用与 DOM 无关的方式与 XML 文档交互。这样不但大大减少了代码行,而且这种编程模型可以直接映射到格式良好的XML文档结构。
{
// A "functional" approach to build an
// XML element in memory.
XElement inventory =
new XElement("Inventory",
new XElement("Car", new XAttribute("ID", "1"),
new XElement("Color", "Green"),
new XElement("Make", "BMW"),
new XElement("PetName", "Stan")
)
);
// Call ToString() on our XElement.
Console.WriteLine(inventory);
}
在内存中创建XML文档
{
XDocument inventoryDoc =
new XDocument(
new XDeclaration("1.0", "utf-8", "yes"),
new XComment("Current Inventory of AutoLot"),
new XElement("Inventory",
new XElement("Car", new XAttribute("ID", "1"),
new XElement("Color", "Green"),
new XElement("Make", "BMW"),
new XElement("PetName", "Stan")
),
new XElement("Car", new XAttribute("ID", "2"),
new XElement("Color", "Pink"),
new XElement("Make", "Yugo"),
new XElement("PetName", "Melvin")
)
)
);
// Display the document and save to disk.
Console.WriteLine(inventoryDoc);
inventoryDoc.Save("SimpleInventory.xml");
}
三、使用 LINQ 查询创建XML文档
{
// Create an anonymous array of anonymous types.
var data = new [] {
new { PetName = "Melvin", ID = 10 },
new { PetName = "Pat", ID = 11 },
new { PetName = "Danny", ID = 12 },
new { PetName = "Clunker", ID = 13 }
};
// Now enumerate over the array to build
// an XElement.
XElement vehicles =
new XElement("Inventory",
from c in data
select new XElement("Car",
new XAttribute("ID", c.ID),
new XElement("PetName", c.PetName)
)
);
Console.WriteLine(vehicles);
}
四、加载和解析XML内容
{
// Build an XElement from string.
string myElement =
@"<Car ID ='3'>
<Color>Yellow</Color>
<Make>Yugo</Make>
</Car>";
XElement newElement = XElement.Parse(myElement);
Console.WriteLine(newElement);
Console.WriteLine();
// Load the SimpleInventory.xml file.
XDocument myDoc = XDocument.Load("SimpleInventory.xml");
Console.WriteLine(myDoc);
}
六、遍历内存中的XML文档
XML示例:
<Inventory>
<Car carID ="0">
<Make>Ford</Make>
<Color>Blue</Color>
<PetName>Chuck</PetName>
</Car>
<Car carID ="1">
<Make>VW</Make>
<Color>Silver</Color>
<PetName>Mary</PetName>
</Car>
<Car carID ="2">
<Make>Yugo</Make>
<Color>Pink</Color>
<PetName>Gipper</PetName>
</Car>
<Car carID ="55">
<Make>Ford</Make>
<Color>Yellow</Color>
862 CHAPTER 24 n PROGRAMMING WITH THE LINQ APIS
<PetName>Max</PetName>
</Car>
<Car carID ="98">
<Make>BMW</Make>
<Color>Black</Color>
<PetName>Zippy</PetName>
</Car>
</Inventory>
加载
{
Console.WriteLine("***** Fun with LINQ to XML *****/n");
// Load the Inventory.xml document into memory.
XElement doc = XElement.Load("Inventory.xml");
// We will author each of these next
PrintAllPetNames(doc);
Console.WriteLine();
GetAllFords(doc);
Console.ReadLine();
}
遍历
{
var petNames = from pn in doc.Descendants("PetName")
select pn.Value;
foreach (var name in petNames)
Console.WriteLine("Name: {0}", name);
}
查询
{
var fords = from c in doc.Descendants("Make")
where c.Value == "Ford"
select c;
foreach (var f in fords)
Console.WriteLine("Name: {0}", f);
}
七、修改 XML文档
{
// Add 5 new purple Fords to the incoming document.
for (int i = 0; i < 5; i++)
{
// Create a new XElement
XElement newCar =
new XElement("Car", new XAttribute("ID", i + 1000),
new XElement("Color", "Green"),
new XElement("Make", "Ford"),
new XElement("PetName", "")
);
// Add to doc.
doc.Add(newCar);
}
// Show the updates.
Console.WriteLine(doc);
}
- C# 2008 学习笔记 - LINQ to XML
- C# 2008 学习笔记 - LINQ to XML
- C# 2008 学习笔记 - LINQ to XML
- C# 2008 学习笔记 - LINQ to XML
- C# 2008 学习笔记 - LINQ to XML
- LINQ to XML 学习笔记
- 【linq学习笔记】1、linq to xml
- C# LINQ to XML
- C# LINQ to XML
- C# LINQ to XML
- c# Linq to Xml
- C# LINQ to XML
- C# 2008 学习笔记 - LINQ to ADO.NET(二)- LINQ to DataSet
- LINQ TO XML学习
- C# 3.0 LINQ to XML
- C#中的Linq to Xml
- LINQ to XML LINQ学习第一篇
- C#学习笔记-LINQ
- 判断两个链表是否相交
- QT的Graphics View柜架(1/3)
- QT的Graphics View柜架(2/3)
- c#线程-线程间发消息-线程给窗体传值
- c++名库
- C# 2008 学习笔记 - LINQ to XML
- C# 2008 学习笔记 - LINQ to XML
- C# 2008 学习笔记 - LINQ to XML
- 一个批处理(BAT)文件中成功执行多个ant命令的操作
- wmframework成长日记(一)——框架介绍
- 难啊,困,困
- GLUT函数说明--初始化
- 怀念妈妈煮的白粥
- Emacs 快速指南.(查看版权声明请至本文末尾)