使用 LINQ to XML
来源:互联网 发布:好八字 知乎 编辑:程序博客网 时间:2024/05/22 10:23
使用 LINQ to XML
LINQ to XML 的目标是提供 XML 对象模型,能够很好地以LINQ 的函数风格进行编程。表 9-4 汇总了这个命名空间中的重要类。
表 9-4 由 LINQ to XML 提供的类
类名
父类
描述
XNode
这个类提供了应用于 XML 文档中的所有结点的基础功能。
XContainer
XNode
这个类提供了 XML 结点的功能,可以包含其他结点。
XDocument
XContainer
这个类把 XML 文档作为一个整体表示。
XElement
XContainer
这个类表示 XML 文档中元素,即,表示通常的 XML 结点可以是标记,<myTag />,或包含其他标记或属性,如,myAttribute="myVal"。
XDocumentType
XNode
这个类表示文档类型标记。
XProcessInstruction
XNode
这个类表示处理指令,标记形式为 <? name instruction ?>。
XText
XNode
这个类表示包含在 XML 文档中的文本。
XName
这个类表示标记或属性的名字。
可以看到实际使用的这个对象模型,通过修改前一节的例子,把输出的纯文本改成 XML,用LINQ to XML 很容易就能完成。首先,修改 select 子句,使返回的元组成为 XEement:
|> select (fun m -> newXElement(XName.Get(m.Key), count m))
这就得到一个 XEements 数组,然后用它来初始化另一个 XEement,它提供文档的根;这时,调用根 XElement 的 ToString 方法,它将以字符串的形式提供 XML:
open System
open System.Linq
open System.Reflection
open System.Xml.Linq
//define easier access to LINQ methods
let select f s = Enumerable.Select(s, new Func<_,_>(f))
let where f s = Enumerable.Where(s, new Func<_,_>(f))
let groupBy f s = Enumerable.GroupBy(s, new Func<_,_>(f))
let orderBy f s = Enumerable.OrderBy(s, new Func<_,_>(f))
let count s = Enumerable.Count(s)
//query string methods using functions
let namesByFunction =
(typeof<string>).GetMethods()
|> where (fun m -> not m.IsStatic)
|> groupBy (fun m -> m.Name)
|> select (fun m -> newXElement(XName.Get(m.Key), count m))
|> orderBy (fun e -> int e.Value)
//create an xml document with the overloads data
let overloadsXml =
new XElement(XName.Get("MethodOverloads"), namesByFunction)
//print the xml string
printfn"%s"(overloadsXml.ToString())
[
需要引用 System.Xml 和 System.Xml.Linq
]
运行结果如下:
<MethodOverloads>
<get_Chars>1</get_Chars>
<CopyTo>1</CopyTo>
<GetHashCode>1</GetHashCode>
<get_Length>1</get_Length>
<TrimStart>1</TrimStart>
<TrimEnd>1</TrimEnd>
<Contains>1</Contains>
<ToLowerInvariant>1</ToLowerInvariant>
<ToUpperInvariant>1</ToUpperInvariant>
<Clone>1</Clone>
<Insert>1</Insert>
<GetTypeCode>1</GetTypeCode>
<GetEnumerator>1</GetEnumerator>
<GetType>1</GetType>
<ToCharArray>2</ToCharArray>
<Substring>2</Substring>
<Trim>2</Trim>
<IsNormalized>2</IsNormalized>
<Normalize>2</Normalize>
<CompareTo>2</CompareTo>
<PadLeft>2</PadLeft>
<PadRight>2</PadRight>
<ToLower>2</ToLower>
<ToUpper>2</ToUpper>
<ToString>2</ToString>
<Replace>2</Replace>
<Remove>2</Remove>
<Equals>3</Equals>
<EndsWith>3</EndsWith>
<IndexOfAny>3</IndexOfAny>
<LastIndexOfAny>3</LastIndexOfAny>
<StartsWith>3</StartsWith>
<Split>6</Split>
<IndexOf>9</IndexOf>
<LastIndexOf>9</LastIndexOf>
</MethodOverloads>
第九章小结
这一章我们已经学习了在 F# 中访问数据,可以看出 F# 与 .NET 库的组合,功能强大又很简单,不管是何种数据源。下一章我们将学习如何使应用程序并行化的新课题。
- 使用LINQ to XML
- 使用 LINQ to XML
- LINQ To Xml:使用XPath
- 使用Linq to XML加载XML文档
- 使用Linq to XML创建保存XML
- 使用Linq to XML遍历XML
- 使用 linq to xml 操作xml文件
- 在silverlight中使用Linq TO XML
- 通过 LINQ to XML 使用字典
- 使用Dom与Linq to Xml
- 使用Linq to Xml创建一个xml文件
- c# comboBox 使用 linq to xml 绑定 XML文件
- [代码]使用函数构造创建XML树(LINQ to XML)
- [代码]使用XmlWriter填充XML树(LINQ to XML)
- [代码]使用XSD验证XML示例1(LINQ to XML)
- [代码]使用XSD验证XML示例2(LINQ to XML)
- 使用Linq to XML操作XML的元素
- 使用Linq to XML操作XML的属性
- 基于C++的串口通讯//使用MsComm控件//SetRThreshold()函数的使用,根据数据数量触发端口
- HUD1711
- JDK1.7.0_51使用javah工具生成.h声明文件的环境配置
- Python中dict的排序方法(按key或按value)
- 跑腿兔(TaskRabbit)是一个跑腿网站
- 使用 LINQ to XML
- poj3177 Redundant Paths
- 导致企业营销模式脱节的几宗问题
- 【Linux入门学习之】vi/vim编辑器必知必会
- PyQt4 精彩实例分析* 实例1 Hello Kitty!
- Smack PacketReader 启动过程分析
- 一个古怪而又有用的python语法
- hibernate映射(一) 之Hibernate单项多对一映射
- summernote网页编辑器嵌入视频