简析System.Xml.Linq.dll 程序集
来源:互联网 发布:主力为什么要洗盘 知乎 编辑:程序博客网 时间:2024/05/17 06:46
一、命名空间
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文档结构。
static void CreateFunctionalXmlElement()
{
// 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文档
static void CreateFunctionalXmlDoc()
{
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文档
static void CreateXmlDocFromArray()
{
// 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内容
static void LoadExistingXml()
{
// Build an XElement from string.
string myElement =
@"
Yellow
Yugo
";
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示例:
<?xml version="1.0" encoding="utf-8"?>
<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> 加载
static void Main(string[] args)
{
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();
} 遍历
static void PrintAllPetNames(XElement doc)
{
var petNames = from pn in doc.Descendants("PetName")
select pn.Value;
foreach (var name in petNames)
Console.WriteLine("Name: {0}", name);
} 查询
static void GetAllFords(XElement doc)
{
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文档
static void AddNewElements(XElement doc)
{
// 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);
}
- 简析System.Xml.Linq.dll 程序集
- System.Xml.Linq简介
- System.Linq
- System.Linq
- 命名空间“System”中不存在类型或命名空间名称“Linq”。是否缺少程序集引用?
- C# using System.Xml.Linq;提示没有命令空间问题解决
- CLR程序里引用System.Web.dll
- CS0234: 命名空间“System”中不存在类型或命名空间名称“Linq”(是否缺少程序集引用?)
- 编译器错误消息: CS0234: 命名空间“System”中不存在类型或命名空间名称“Linq”(是否缺少程序集引用?)
- 命名空间“System”中不存在类型或命名空间名称“Linq”(是缺少程序集引用吗?)
- 命名空间“System.Data”中不存在类型或命名空间名称“Linq”(是否缺少程序集引用?)
- CS0234: 命名空间“System”中不存在类型或命名空间名称“Linq”(是缺少程序集引用吗?)
- 未能加载文件或程序集“System.Data.SQLite.DLL”或它的某一个依赖项
- 初识.net界面程序(9)--LINQ To XML
- 方便的System.Linq
- System.Linq源码
- 未能加载文件或程序集System.Data,Version=2.0.0.0和System.XML,Version=2.0.0.0解决方法
- 程序集 DLL 位置
- AS3.0中有关显示对象类的类总结
- Jasper客户端打印,通过demo中webapp的applet来实现
- XSLT - 利用template实现for循环
- C#泛型机制不支持在除方法外的其他成员
- Openfire插件开发
- 简析System.Xml.Linq.dll 程序集
- lun与volume的关系(摘自wiki)
- excel操作
- 浏览器URL编码
- 相关资料
- jQuery使用手册(一)
- illegal use of incomplete struct/union/class 'CAknViewAppUi'
- 开山!
- 字符串以'/0'结束