Linq To Xml 备忘录2(X* 类的使用)
2010-09-15 22:27
295 查看
Linq To XML 中使用到的以X开头的类都在 System.Xml.Linq 命名空间下。如下图所示:
XObject
|-XAttribute
|-XNode
|-XComment
|-XContainer
| |-XElement
| |-XDocument
|-XDocumentType
|-XProcessingInstruction
|-XText
|-XCData
另外比较有用的类:XStreamElement 用于处理大数据量的XML,以提高性能。
1. XML文档作成:
利用 XDocument, XElement, XAttribute, XDeclaration 作成XML。
将会输出下面的结果:
2. 通过 XNamespace 指定命名空间
将会输出以下结果:
3. XPathEvaluate, XPathSelectElements (这些是扩展方法,命名空间:System.Xml.XPath)
通过 XPathEvaluate, XPathSelectElements 使用XPath功能。
下面是示例的XML:
XPathEvalute的使用示例:
结果如下:
Programing Something
Administrating Something
XPathSelectElements的使用示例:
结果如下:
XObject
|-XAttribute
|-XNode
|-XComment
|-XContainer
| |-XElement
| |-XDocument
|-XDocumentType
|-XProcessingInstruction
|-XText
|-XCData
另外比较有用的类:XStreamElement 用于处理大数据量的XML,以提高性能。
1. XML文档作成:
利用 XDocument, XElement, XAttribute, XDeclaration 作成XML。
public static void CreateXDocument() { System.Xml.Linq.XDocument doc = CreateTestXDocument(); doc.Save(@"D:/temp/CreateXDocument.xml"); Console.WriteLine(doc.ToString()); } public static XDocument CreateTestXDocument() { System.Xml.Linq.XDocument doc = new XDocument( new XDeclaration("1.0", "UTF-8", "yes"), new XElement("Product", new XAttribute("id", "RX78"), new XAttribute("operator", "amuro"), new XElement("name", "Gundam"), new XElement("price", "1000"), new XElement("material", "gundarium") ) ); return doc; }
将会输出下面的结果:
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <Product id="RX78" operator="amuro"> <name>Gundam</name> <price>1000</price> <material>gundarium</material> </Product>
2. 通过 XNamespace 指定命名空间
public static void TestXNamespace() { XNamespace ns = "http://ns.handcraft.org/testnamespace"; XElement e = new XElement(ns + "product", new XAttribute("id", "RX78"), new XElement(ns + "name", "Gundam"), new XElement("append", "nonamespace")); Console.WriteLine("默认Namespace:"); Console.WriteLine(e); Console.WriteLine(e.Name); XNamespace ns1 = "http://ns.handcraft.org/testnamespace"; XElement e1 = new XElement(ns1 + "product",new XAttribute(XNamespace.Xmlns + "e1", ns), new XAttribute("id", "RX78"), new XElement(ns1 + "name", "Gundam"), new XElement("append", "nonamespace")); Console.WriteLine("先头追加Namespace:"); Console.WriteLine(e1); }
将会输出以下结果:
默认Namespace: <product id="RX78" xmlns="http://ns.handcraft.org/testnamespace"> <name>Gundam</name> <append xmlns="">nonamespace</append> </product> {http://ns.handcraft.org/testnamespace}product 先头追加Namespace: <e1:product xmlns:e1="http://ns.handcraft.org/testnamespace" id="RX78"> <e1:name>Gundam</e1:name> <append>nonamespace</append> </e1:product>
3. XPathEvaluate, XPathSelectElements (这些是扩展方法,命名空间:System.Xml.XPath)
通过 XPathEvaluate, XPathSelectElements 使用XPath功能。
下面是示例的XML:
<?xml version="1.0" encoding="utf-8"?> <products> <product id="product1" category="book"> <name>Programing Something</name> <price>2000</price> <publishDate>2008/10/10</publishDate> <authors> <author>Tarou Book</author> <author>Hanako Book</author> </authors> </product> <product id="product2" category="book"> <name>Administrating Something</name> <price>5000</price> <publishDate>2008/10/12</publishDate> <authors> <author>Kotarou Book1</author> <author>Kohanako Book2</author> </authors> </product> <product id="product3" category="novel"> <name>Suspection novel</name> <price>500</price> <publishDate>2007/12/12</publishDate> <authors> <author>Jirou Tarou</author> </authors> </product> <product id="product4" category="novel"> <name>Fantasy novel</name> <price>540</price> <publishDate>2008/9/14</publishDate> <authors> <author>Tarou Book</author> </authors> </product> <product id="product5" category="cram"> <name>Study English</name> <price>2400</price> <publishDate>2008/9/14</publishDate> <authors> <author>English Tarou</author> <author>English Jirou</author> </authors> </product> </products>
XPathEvalute的使用示例:
public static void XPathEvaluate() { XElement products = XElement.Load(@"D:/temp/products.xml"); var result = (IEnumerable<Object>) products.XPathEvaluate("/product[@category='book']/name/text()"); foreach (var item in result) { Console.WriteLine(item); } }
结果如下:
Programing Something
Administrating Something
XPathSelectElements的使用示例:
public static void XPathSelect() { XElement products = XElement.Load(@"D:/temp/products.xml"); var query = from c in products.XPathSelectElements("/product[@category='book']") orderby (string) c.Element("name") select c; foreach (var item in query) { Console.WriteLine(item); } }
结果如下:
<product id="product2" category="book"> <name>Administrating Something</name> <price>5000</price> <publishDate>2008/10/12</publishDate> <authors> <author>Kotarou Book1</author> <author>Kohanako Book2</author> </authors> </product> <product id="product1" category="book"> <name>Programing Something</name> <price>2000</price> <publishDate>2008/10/10</publishDate> <authors> <author>Tarou Book</author> <author>Hanako Book</author> </authors> </product>
相关文章推荐
- Linq To Xml 备忘录1(XDocument, XElement的使用)
- Linq To Xml 备忘录3(使用Namespace的查询)
- 在.net framework 2 中使用linq to xml
- [代码]使用函数构造创建XML树(LINQ to XML)
- [代码]使用函数构造创建具有属性的元素(LINQ to XML)
- LinQ To XML——LinQ To XML结合LinQ to Server使用
- 使用linq to xml 快速创建自己的Rss
- LINQ To Xml:使用XPath
- 使用LinqToXML增删
- 使用Linq to XML 修改app.config
- [导入]使用linq to xml 快速创建自己的Rss 之二 Syndication篇
- 在silverlight中使用Linq TO XML
- Linq to XML使用技巧
- C#程序中使用LINQ to XML来查询XML格式数据的实例
- Linq to Oracle 使用教程(五)使用 Xml 映射文件
- 使用Linq to XML来将hardcode在reporting services报表里的label文字变成从数据库取值
- 使用Dom与Linq to Xml
- 在silverlight中使用Linq TO XML
- LINQ to XML 结合 LINQ to SQL 使用
- [代码]使用XmlReader对XML片段进行流式处理(LINQ to XML)