public static void CreateCategoriesFromDatabase()
{
using (NorthwindDataContext db = new NorthwindDataContext())
{
XElement root = new XElement("Categories",
db.Categories
.Select
(
c => new XElement
(
"Category"
, new XElement("CategoryID", c.CategoryID)
, new XElement("CategoryName", c.CategoryName)
, new XElement
(
"Products"
, c.Products
.Select
(
p => new XElement
(
"Product"
, new XElement("ProductName", p.ProductName)
)
)
.Take(2)
)
)
)
.Take(3)
);
root.Save(path);
}
}
运行该示例将会得到一个xml文件,其内容为:
复制代码 代码如下:
<?xml version="1.0" encoding="utf-8"?>
<Categories>
<Category>
<CategoryID>1</CategoryID>
<CategoryName>Beverages</CategoryName>
<Products>
<Product>
<ProductName>Chai</ProductName>
</Product>
<Product>
<ProductName>Chang</ProductName>
</Product>
</Products>
</Category>
<Category>
<CategoryID>2</CategoryID>
<CategoryName>Condiments</CategoryName>
<Products>
<Product>
<ProductName>Aniseed Syrup</ProductName>
</Product>
<Product>
<ProductName>Chef Anton's Cajun Seasoning</ProductName>
</Product>
</Products>
</Category>
<Category>
<CategoryID>3</CategoryID>
<CategoryName>Confections</CategoryName>
<Products>
<Product>
<ProductName>Pavlova</ProductName>
</Product>
<Product>
<ProductName>Teatime Chocolate Biscuits</ProductName>
</Product>
</Products>
</Category>
</Categories>
XElement类包含了许多方法,这些方法使得处理xml变得轻而易举。有关这些方法请参照MSDN。
其中,Save、CreateReader、ToString和WriteTo方法是比较常用的三个方法:
方法
参数
返回值
描述
CreateReader
无
System.Xml.XmlReader
创建此节点的 XmlReader
Save
System.String
void
将此元素序列化为文件
System.IO.TextWriter
void
将此元素序列化为 TextWriter
System.Xml.XmlWriter
void
将此元素序列化为 XmlWriter
System.String,
System.Xml.Linq.SaveOptions
void
将此元素序列化为文件,并可以选择禁用格式设置
System.IO.TextWriter,
System.Xml.Linq.SaveOptions
void
将此元素序列化为 TextWriter,并可以选择禁用格式设置
WriteTo
System.Xml.XmlWriter
void
将此元素写入 XmlWriter
ToString
无
System.String
返回此节点的缩进 XML
System.Xml.Linq.SaveOptions
System.String
返回此节点的 XML,并可以选择禁用格式设置
现在有很多使用XmlReader作为数据源的应用程序,使用XElement可以很方便地提供支持。
3、XAttribute类
XAttribute类用来处理元素的属性,属性是与元素相关联的“名称-值”对,每个元素中不能有名称重复的属性。使用XAttribute类与使用XElement类的操作十分相似,下面的示例演示了如何在创建xml树时为其添加一个属性:
复制代码 代码如下: