LINQ to XML基本操作
Linq to XML同样是对原C#访问XML文件的方法的封装,简化了用xpath进行xml的查询以及增加,修改,删除xml元素的操作。
LINQ to XML 三个最重要类:XElement、XAttribute 和 XDocument。
首先我们先介绍这三个类的基本属性和方法,然后再实现Linq to XML的 增删改查。
1.XDocument
构造函数
名称 | 说明 |
---|---|
XDocument() | 初始化 XDocument 类的新实例。 |
XDocument(Object[]) | 使用指定的内容初始化 XDocument 类的新实例。 |
XDocument(XDocument) | 从现有的 XDocument 对象初始化 XDocument 类的新实例。 |
XDocument(XDeclaration, Object[]) | 用指定的 XDeclaration 和内容初始化 XDocument 类的新实例。 |
属性
名称 | 说明 |
---|---|
BaseUri | 获取此 XObject 的基 URI。 (继承自 XObject。) |
Declaration | 获取或设置此文档的 XML 声明。 |
Document | 获取此 XObject 的 XDocument。 (继承自 XObject。) |
DocumentType | 获取此文档的文档类型定义 (DTD)。 |
FirstNode | 获取此节点的第一个子节点。 (继承自 XContainer。) |
LastNode | 获取此节点的最后一个子节点。 (继承自 XContainer。) |
NextNode | 获取此节点的下一个同级节点。 (继承自 XNode。) |
NodeType | 获取此节点的节点类型。 (重写 XObject.NodeType。) |
Parent | 获取此 XObject 的父级 XElement。 (继承自 XObject。) |
PreviousNode | 获取此节点的上一个同级节点。 (继承自 XNode。) |
Root | 获取此文档的 XML 树的根元素。 |
方法
名称 | 说明 |
---|---|
Add(Object) | 将指定的内容添加为此 XContainer 的子级。 (继承自 XContainer。) |
Add(Object[]) | 将指定的内容添加为此 XContainer 的子级。 (继承自 XContainer。) |
AddAfterSelf(Object) | 紧跟在此节点之后添加指定的内容。 (继承自 XNode。) |
AddAfterSelf(Object[]) | 紧跟在此节点之后添加指定的内容。 (继承自 XNode。) |
AddAnnotation | 将对象添加到此 XObject 的批注列表。 (继承自 XObject。) |
AddBeforeSelf(Object) | 紧邻此节点之前添加指定的内容。 (继承自 XNode。) |
AddBeforeSelf(Object[]) | 紧邻此节点之前添加指定的内容。 (继承自 XNode。) |
AddFirst(Object) | 将指定的内容作为此文档或元素的第一个子级添加。 (继承自 XContainer。) |
AddFirst(Object[]) | 将指定的内容作为此文档或元素的第一个子级添加。 (继承自 XContainer。) |
Ancestors() | 返回此节点的上级元素的集合。 (继承自 XNode。) |
Ancestors(XName) | 返回此节点的经过筛选的上级元素的集合。 集合中只包括具有匹配 XName 的元素。 (继承自 XNode。) |
Annotation(Type) | 从此 XObject 获取指定类型的第一个批注对象。 (继承自 XObject。) |
Annotation<T>() | 从此 XObject 获取指定类型的第一个批注对象。 (继承自 XObject。) |
Annotations(Type) | 获取此 XObject 的指定类型的批注集合。 (继承自 XObject。) |
Annotations<T>() | 获取此 XObject 的指定类型的批注集合。 (继承自 XObject。) |
CreateReader() | 创建此节点的 XmlReader。 (继承自 XNode。) |
CreateReader(ReaderOptions) | 使用 readerOptions 参数指定的选项创建 XmlReader。 (继承自 XNode。) |
CreateWriter | 创建可用于将节点添加至 XContainer 的 XmlWriter。 (继承自 XContainer。) |
DescendantNodes | 按文档顺序返回此文档或元素的子代节点集合。 (继承自 XContainer。) |
Descendants() | 按文档顺序返回此文档或元素的子代元素集合。 (继承自 XContainer。) |
Descendants(XName) | 按文档顺序返回此文档或元素的经过筛选的子代元素集合。 集合中只包括具有匹配 XName 的元素。 (继承自XContainer。) |
Element | 获取具有指定 XName 的第一个(按文档顺序)子元素。 (继承自 XContainer。) |
Elements() | 按文档顺序返回此元素或文档的子元素集合。 (继承自 XContainer。) |
Elements(XName) | 按文档顺序返回此元素或文档的经过筛选的子元素集合。 集合中只包括具有匹配 XName 的元素。 (继承自XContainer。) |
ElementsAfterSelf() | 按文档顺序返回此节点后的同级元素集合。 (继承自 XNode。) |
ElementsAfterSelf(XName) | 按文档顺序返回此节点后经过筛选的同级元素的集合。 集合中只包括具有匹配 XName 的元素。 (继承自 XNode。) |
ElementsBeforeSelf() | 按文档顺序返回此节点前的同级元素集合。 (继承自 XNode。) |
ElementsBeforeSelf(XName) | 按文档顺序返回此节点前经过筛选的同级元素的集合。 集合中只包括具有匹配 XName 的元素。 (继承自 XNode。) |
Equals(Object) | 确定指定的对象是否等于当前对象。 (继承自 Object。) |
Finalize | 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。) |
GetHashCode | 作为默认哈希函数。 (继承自 Object。) |
GetType | 获取当前实例的 Type。 (继承自 Object。) |
IsAfter | 确定当前节点是否按文档顺序显示在指定节点之后。 (继承自 XNode。) |
IsBefore | 确定当前节点是否按文档顺序显示在指定节点之前。 (继承自 XNode。) |
Load(Stream) | 使用指定的流创建一个新的 XDocument 实例。 |
Load(String) | 从文件创建新 XDocument。 |
Load(TextReader) | 从 TextReader 创建新的 XDocument。 |
Load(XmlReader) | 从 XmlReader 创建新 XDocument。 |
Load(Stream, LoadOptions) | 使用指定流创建新的 XDocument 实例,也可以选择保留空白,设置基 URI 和保留行信息。 |
Load(String, LoadOptions) | 从文件创建新 XDocument,还可以选择保留空白和行信息以及设置基 URI。 |
Load(TextReader, LoadOptions) | 从 TextReader 创建新 XDocument,还可以选择保留空白和行信息以及设置基 URI。 |
Load(XmlReader, LoadOptions) | 从 XmlReader 加载 XDocument,还可以选择设置基 URI 和保留行信息。 |
MemberwiseClone | 创建当前 Object 的浅表副本。 (继承自 Object。) |
Nodes | 按文档顺序返回此元素或文档的子节点集合。 (继承自 XContainer。) |
NodesAfterSelf | 按文档顺序返回此节点后的同级节点的集合。 (继承自 XNode。) |
NodesBeforeSelf | 按文档顺序返回此节点前的同级节点的集合。 (继承自 XNode。) |
Parse(String) | 从字符串创建新 XDocument。 |
Parse(String, LoadOptions) | 从字符串创建新 XDocument,还可以选择保留空白和行信息以及设置基 URI。 |
Remove | 从节点父级中删除此节点。 (继承自 XNode。) |
RemoveAnnotations(Type) | 从此 XObject 移除指定类型的批注。 (继承自 XObject。) |
RemoveAnnotations<T>() | 从此 XObject 移除指定类型的批注。 (继承自 XObject。) |
RemoveNodes | 从此文档或元素中移除子节点。 (继承自 XContainer。) |
ReplaceNodes(Object) | 使用指定的内容替换此文档或元素的子节点。 (继承自 XContainer。) |
ReplaceNodes(Object[]) | 使用指定的内容替换此文档或元素的子节点。 (继承自 XContainer。) |
ReplaceWith(Object) | 使用指定的内容替换此节点。 (继承自 XNode。) |
ReplaceWith(Object[]) | 使用指定的内容替换此节点。 (继承自 XNode。) |
Save(Stream) | 将此 XDocument 输出到指定的 Stream。 |
Save(String) | 序列化此 XDocument 到文件,如果该文件存在,则覆盖现有的文件。 |
Save(TextWriter) | 将此 XDocument 序列化为 TextWriter。 |
Save(XmlWriter) | 将此 XDocument 序列化为 XmlWriter。 |
Save(Stream, SaveOptions) | 将此 XDocument 输出到指定的 Stream,(可选)并指定格式设置行为。 |
Save(String, SaveOptions) | 将此 XDocument 序列化为文件,还可以选择禁用格式设置。 |
Save(TextWriter, SaveOptions) | 将此 XDocument 序列化为 TextWriter,还可以选择禁用格式设置。 |
ToString() | 返回此节点的缩进 XML。 (继承自 XNode。) |
ToString(SaveOptions) | 返回此节点的 XML,还可以选择禁用格式设置。 (继承自 XNode。) |
WriteTo | 将此文档写入 XmlWriter。 (重写 XNode.WriteTo(XmlWriter)。) |
2.XElement
构造函数
名称 | 说明 |
---|---|
XElement(XElement) | 从其他 XElement 对象初始化 XElement 类的新实例。 |
XElement(XName) | 用指定的名称初始化 XElement 类的新实例。 |
XElement(XStreamingElement) | 从 XStreamingElement 对象初始化 XElement 类的新实例。 |
XElement(XName, Object) | 用指定的名称和内容初始化 XElement 类的新实例。 |
XElement(XName, Object[]) | 用指定的名称和内容初始化 XElement 类的新实例。 |
属性
名称 | 说明 |
---|---|
BaseUri | 获取此 XObject 的基 URI。 (继承自 XObject。) |
Document | 获取此 XObject 的 XDocument。 (继承自 XObject。) |
EmptySequence | 获取空的元素集合。 |
FirstAttribute | 获取此元素的第一个属性。 |
FirstNode | 获取此节点的第一个子节点。 (继承自 XContainer。) |
HasAttributes | 获取一个值,该值指示此元素是否至少具有一个属性。 |
HasElements | 获取一个值,该值指示此元素是否至少具有一个子元素。 |
IsEmpty | 获取一个值,该值指示此元素是否不包含内容。 |
LastAttribute | 获取此元素的最后一个属性。 |
LastNode | 获取此节点的最后一个子节点。 (继承自 XContainer。) |
Name | 获取或设置此元素的名称。 |
NextNode | 获取此节点的下一个同级节点。 (继承自 XNode。) |
NodeType | 获取此节点的节点类型。 (重写 XObject.NodeType。) |
Parent | 获取此 XObject 的父级 XElement。 (继承自 XObject。) |
PreviousNode | 获取此节点的上一个同级节点。 (继承自 XNode。) |
Value | 获取或设置此元素的串连文本内容。 |
方法
名称 | 说明 |
---|---|
Add(Object) | 将指定的内容添加为此 XContainer 的子级。 (继承自 XContainer。) |
Add(Object[]) | 将指定的内容添加为此 XContainer 的子级。 (继承自 XContainer。) |
AddAfterSelf(Object) | 紧跟在此节点之后添加指定的内容。 (继承自 XNode。) |
AddAfterSelf(Object[]) | 紧跟在此节点之后添加指定的内容。 (继承自 XNode。) |
AddAnnotation | 将对象添加到此 XObject 的批注列表。 (继承自 XObject。) |
AddBeforeSelf(Object) | 紧邻此节点之前添加指定的内容。 (继承自 XNode。) |
AddBeforeSelf(Object[]) | 紧邻此节点之前添加指定的内容。 (继承自 XNode。) |
AddFirst(Object) | 将指定的内容作为此文档或元素的第一个子级添加。 (继承自 XContainer。) |
AddFirst(Object[]) | 将指定的内容作为此文档或元素的第一个子级添加。 (继承自 XContainer。) |
Ancestors() | 返回此节点的上级元素的集合。 (继承自 XNode。) |
Ancestors(XName) | 返回此节点的经过筛选的上级元素的集合。 集合中只包括具有匹配 XName 的元素。 (继承自 XNode。) |
AncestorsAndSelf() | 返回元素集合,其中包含此元素及其上级。 |
AncestorsAndSelf(XName) | 返回经过筛选的元素集合,其中包含此元素及其上级。 集合中只包括具有匹配 XName 的元素。 |
Annotation(Type) | 从此 XObject 获取指定类型的第一个批注对象。 (继承自 XObject。) |
Annotation<T>() | 从此 XObject 获取指定类型的第一个批注对象。 (继承自 XObject。) |
Annotations(Type) | 获取此 XObject 的指定类型的批注集合。 (继承自 XObject。) |
Annotations<T>() | 获取此 XObject 的指定类型的批注集合。 (继承自 XObject。) |
Attribute | 返回具有指定 XName 的此 XElement 的 XAttribute。 |
Attributes() | 返回此元素的属性集合。 |
Attributes(XName) | 返回经过筛选的此元素的属性集合。 集合中只包括具有匹配 XName 的元素。 |
CreateReader() | 创建此节点的 XmlReader。 (继承自 XNode。) |
CreateReader(ReaderOptions) | 使用 readerOptions 参数指定的选项创建 XmlReader。 (继承自 XNode。) |
CreateWriter | 创建可用于将节点添加至 XContainer 的 XmlWriter。 (继承自 XContainer。) |
DescendantNodes | 按文档顺序返回此文档或元素的子代节点集合。 (继承自 XContainer。) |
DescendantNodesAndSelf | 返回节点的集合,而这些节点包含此元素以及此元素的所有子代节点,并将它们按文档顺序排列。 |
Descendants() | 按文档顺序返回此文档或元素的子代元素集合。 (继承自 XContainer。) |
Descendants(XName) | 按文档顺序返回此文档或元素的经过筛选的子代元素集合。 集合中只包括具有匹配 XName 的元素。 (继承自XContainer。) |
DescendantsAndSelf() | 返回元素的集合,而这些元素包含此元素以及此元素的所有子代元素,并按文档顺序排列它们。 |
DescendantsAndSelf(XName) | 返回经过筛选的元素集合,这些元素包含此元素以及此元素的所有子代元素,并按文档顺序排列它们。 集合中只包括具有匹配 XName 的元素。 |
Element | 获取具有指定 XName 的第一个(按文档顺序)子元素。 (继承自 XContainer。) |
Elements() | 按文档顺序返回此元素或文档的子元素集合。 (继承自 XContainer。) |
Elements(XName) | 按文档顺序返回此元素或文档的经过筛选的子元素集合。 集合中只包括具有匹配 XName 的元素。 (继承自XContainer。) |
ElementsAfterSelf() | 按文档顺序返回此节点后的同级元素集合。 (继承自 XNode。) |
ElementsAfterSelf(XName) | 按文档顺序返回此节点后经过筛选的同级元素的集合。 集合中只包括具有匹配 XName 的元素。 (继承自 XNode。) |
ElementsBeforeSelf() | 按文档顺序返回此节点前的同级元素集合。 (继承自 XNode。) |
ElementsBeforeSelf(XName) | 按文档顺序返回此节点前经过筛选的同级元素的集合。 集合中只包括具有匹配 XName 的元素。 (继承自 XNode。) |
Equals(Object) | 确定指定的对象是否等于当前对象。 (继承自 Object。) |
Finalize | 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。) |
GetDefaultNamespace | 获取此 XElement 的默认 XNamespace。 |
GetHashCode | 作为默认哈希函数。 (继承自 Object。) |
GetNamespaceOfPrefix | 获取此 XElement 的与特定前缀关联的命名空间。 |
GetPrefixOfNamespace | 获取与此 XElement 的命名空间关联的前缀。 |
GetType | 获取当前实例的 Type。 (继承自 Object。) |
IsAfter | 确定当前节点是否按文档顺序显示在指定节点之后。 (继承自 XNode。) |
IsBefore | 确定当前节点是否按文档顺序显示在指定节点之前。 (继承自 XNode。) |
Load(Stream) | 使用指定的流创建一个新的 XElement 实例。 |
Load(String) | 从文件加载 XElement。 |
Load(TextReader) | 从 TextReader 加载 XElement。 |
Load(XmlReader) | 从 XmlReader 加载 XElement。 |
Load(Stream, LoadOptions) | 使用指定流创建新的 XElement 实例,也可以选择保留空白,设置基 URI 和保留行信息。 |
Load(String, LoadOptions) | 从文件加载 XElement,还可以选择保留空白、设置基 URI 和保留行信息。 |
Load(TextReader, LoadOptions) | 从 TextReader 加载 XElement,还可以选择保留空白和行信息。 |
Load(XmlReader, LoadOptions) | 从 XmlReader 加载 XElement 时,可以选择保留空白、设置基 URI 和保留行信息。 |
MemberwiseClone | 创建当前 Object 的浅表副本。 (继承自 Object。) |
Nodes | 按文档顺序返回此元素或文档的子节点集合。 (继承自 XContainer。) |
NodesAfterSelf | 按文档顺序返回此节点后的同级节点的集合。 (继承自 XNode。) |
NodesBeforeSelf | 按文档顺序返回此节点前的同级节点的集合。 (继承自 XNode。) |
Parse(String) | 从包含 XML 的字符串加载 XElement。 |
Parse(String, LoadOptions) | 从包含 XML 的字符串加载 XElement,还可以选择保留空白和行信息。 |
Remove | 从节点父级中删除此节点。 (继承自 XNode。) |
RemoveAll | 从此 XElement 中移除节点和属性。 |
RemoveAnnotations(Type) | 从此 XObject 移除指定类型的批注。 (继承自 XObject。) |
RemoveAnnotations<T>() | 从此 XObject 移除指定类型的批注。 (继承自 XObject。) |
RemoveAttributes | 移除此 XElement 的属性。 |
RemoveNodes | 从此文档或元素中移除子节点。 (继承自 XContainer。) |
ReplaceAll(Object) | 使用指定的内容替换此元素的子节点和属性。 |
ReplaceAll(Object[]) | 使用指定的内容替换此元素的子节点和属性。 |
ReplaceAttributes(Object) | 使用指定的内容替换此元素的属性。 |
ReplaceAttributes(Object[]) | 使用指定的内容替换此元素的属性。 |
ReplaceNodes(Object) | 使用指定的内容替换此文档或元素的子节点。 (继承自 XContainer。) |
ReplaceNodes(Object[]) | 使用指定的内容替换此文档或元素的子节点。 (继承自 XContainer。) |
ReplaceWith(Object) | 使用指定的内容替换此节点。 (继承自 XNode。) |
ReplaceWith(Object[]) | 使用指定的内容替换此节点。 (继承自 XNode。) |
Save(Stream) | 将此 XElement 输出到指定的 Stream。 |
Save(String) | 将此元素序列化为文件。 |
Save(TextWriter) |
将此元素序列化为 TextWriter。 |
Save(XmlWriter) | 将此元素序列化为 XmlWriter。 |
Save(Stream, SaveOptions) | 将此 XElement 输出到指定的 Stream,(可选)并指定格式设置行为。 |
Save(String, SaveOptions) | 将此元素序列化为文件,并可以选择禁用格式设置。 |
Save(TextWriter, SaveOptions) | 将此元素序列化为 TextWriter,并可以选择禁用格式设置。 |
SetAttributeValue | 设置属性的值、添加属性或移除属性。 |
SetElementValue | 设置子元素的值、添加子元素或移除子元素。 |
SetValue | 设置此元素的值。 |
ToString() | 返回此节点的缩进 XML。 (继承自 XNode。) |
ToString(SaveOptions) | 返回此节点的 XML,还可以选择禁用格式设置。 (继承自 XNode。) |
WriteTo | 将此元素写入 XmlWriter。 (重写 XNode.WriteTo(XmlWriter)。) |
3.XAttribute
构造函数
名称 | 说明 |
---|---|
XAttribute(XAttribute) | 从其他 XAttribute 对象初始化 XAttribute 类的新实例。 |
XAttribute(XName, Object) | 从指定的名称和值初始化 XAttribute 类的新实例。 |
属性
名称 | 说明 |
---|---|
BaseUri | 获取此 XObject 的基 URI。 (继承自 XObject。) |
Document | 获取此 XObject 的 XDocument。 (继承自 XObject。) |
EmptySequence | 获取空的属性集合。 |
IsNamespaceDeclaration | 确定此属性是否为命名空间声明。 |
Name | 获取此属性 (Attribute) 的展开名称。 |
NextAttribute | 获取父元素的下一个属性 (Attribute)。 |
NodeType | 获取此节点的节点类型。 (重写 XObject.NodeType。) |
Parent | 获取此 XObject 的父级 XElement。 (继承自 XObject。) |
PreviousAttribute | 获取父元素的上一个属性 (Attribute)。 |
Value | 获取或设置此属性的值。 |
方法
名称 | 说明 |
---|---|
AddAnnotation | 将对象添加到此 XObject 的批注列表。 (继承自 XObject。) |
Annotation(Type) | 从此 XObject 获取指定类型的第一个批注对象。 (继承自 XObject。) |
Annotation<T>() | 从此 XObject 获取指定类型的第一个批注对象。 (继承自 XObject。) |
Annotations(Type) | 获取此 XObject 的指定类型的批注集合。 (继承自 XObject。) |
Annotations<T>() | 获取此 XObject 的指定类型的批注集合。 (继承自 XObject。) |
Equals(Object) | 确定指定的对象是否等于当前对象。 (继承自 Object。) |
Finalize | 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。) |
GetHashCode | 作为默认哈希函数。 (继承自 Object。) |
GetType | 获取当前实例的 Type。 (继承自 Object。) |
MemberwiseClone | 创建当前 Object 的浅表副本。 (继承自 Object。) |
Remove | 从此属性的父元素中移除它。 |
RemoveAnnotations(Type) | 从此 XObject 移除指定类型的批注。 (继承自 XObject。) |
RemoveAnnotations<T>() | 从此 XObject 移除指定类型的批注。 (继承自 XObject。) |
SetValue | 设置此属性的值。 |
ToString | 将当前的 XAttribute 对象转换为字符串表示形式。 (重写 Object.ToString()。) |
简单示例
1.创建XML
- XDocument doc = new XDocument( ///创建XDocument类的实例
- new XDeclaration("1.0", "utf-8", "yes"),///XML的声明,包括版本,编码,xml文件是否独立
- new XElement("Books", ///添加根节点
- new XElement("Book", ///添加一个节点
- new XAttribute("BookID", ""),///添加属性BookID
- new XElement("BookNo", ""), ///添加元素BookNo
- new XElement("BookName", "Book 0001"),///添加元素BookName
- new XElement("BookPrice", ""),///添加元素BookPrice
- new XElement("BookRemark", "This is a book 0001")///添加元素BookRemark
- )
- )
- );
- ///保存XML文件到指定地址
- doc.Save(@"C:\Books.xml");
2.添加元素
- ///导入XML文件
- XElement xe = XElement.Load(@"C:\Books.xml");
- ///创建一个新节点
- XElement book1 = new XElement("Book",
- new XAttribute("BookID", ""),
- new XElement("BookNo", ""),
- new XElement("BookName", "Book 0002"),
- new XElement("BookPrice", ""),
- new XElement("BookRemark", "This is a book 0002")
- );
- ///添加节点到XML文件中,并保存
- xe.Add(book1);
- ///创建一个新节点
- XElement book2 = new XElement("Book",
- new XAttribute("BookID", ""),
- new XElement("BookNo", ""),
- new XElement("BookName", "Book 0003"),
- new XElement("BookPrice", ""),
- new XElement("BookRemark", "This is a book 0003")
- );
- ///添加节点到XML文件中,并保存
- xe.Add(book2);
- ///创建一个新节点
- XElement book3 = new XElement("Book",
- new XAttribute("BookID", ""),
- new XElement("BookNo", ""),
- new XElement("BookName", "Book 0004"),
- new XElement("BookPrice", ""),
- new XElement("BookRemark", "This is a book 0004")
- );
- ///添加节点到XML文件中
- xe.Add(book3);
- ///保存到XML文件中
- xe.Save(@"C:\Books.xml");
3.修改元素
- XElement xe = XElement.Load(@"C:\Books.xml");
- ///查询修改的元素
- IEnumerable<XElement> element = from e in xe.Elements("Book")
- where e.Attribute("BookID").Value == "xxx" //xxx指定的修改元素
- select e;
- ///修改元素
- if (element.Count() > )
- {
- XElement firstelement = element.First();
- ///设置新的属性
- firstelement.SetAttributeValue("BookID", "new004");
- ///替换成新的节点
- firstelement.ReplaceNodes(
- new XElement("BookNo", "new0004"),
- new XElement("BookName", "Book new0004"),
- new XElement("BookPrice", ""),
- new XElement("BookRemark", "This is a book new0004")
- );
- }
- xe.Save(@"C:\Books.xml");
4.删除元素
- XElement xe = XElement.Load(@"C:\Books.xml");
- ///查询修改的元素
- IEnumerable<XElement> element = from e in xe.Elements("Book")
- where e.Attribute("BookID").Value == "xxx" //xxx 指定删除元素
- select e;
- ///修改元素
- if (element.Count() > )
- {
- XElement firstelement = element.First();
- ///删除此元素的所有节点和属性
- firstelement.RemoveAll();
- ///删除此元素的属性
- //firstelement.RemoveAttributes();
- ///删除此元素的子节点
- //firstelement.RemoveNodes();
- }
- xe.Save(@"C:\Books.xml");
5.一些常用查询
- XElement xe = XElement.Load(@"C:\Books.xml");
- //查询元素并排序
- var elements = xe.Elements("Book")
- .Where(e => Convert.ToInt32(e.Attribute("BookID").Value.Substring(e.Attribute("BookID").Value.Length - , )) > )
- .OrderByDescending(e => (string)e.Element("BookName"))
- .ToList();
- //查询指定元素的子元素
- var elements = xe.Elements("Book")
- .Descendants("xxx") //xxx 指定元素
- .ToList();
- //查询指定属性的元素
- var eAttribute = xe.Elements("Book")
- .Where(e => (string)e.Attribute("BookID") == "xxx") //xxx 指定属性
- .OrderBy(e => e.Element("BookID"))
- .ToList();
- //查询指定名称的元素
- var elements = xe.Elements("Book")
- .Where(e => (string)e.Element("BookName") == "xxx") //指定元素名称
- .OrderBy(e => e.Element("BookID"))
- .ToList();
到这里结束了,现在感觉LINQ to XML 是不是很简单啊,相信你会喜欢上Linq语法的。
本文只着重介绍了LINQ to XML 类的 XElement、XAttribute和XDocument三个类,当然还有其他的一些,这里就不作详细介绍了,如需查看请点此跳转到MSDN LINQ to XML 类概述。
感谢您的阅读,如有任何建议请评论提出。
感觉还不错,请推荐下,谢谢。
LINQ to XML基本操作的更多相关文章
- linq to xml 基本操作
使用XDocument类来进行简单的xml操作,用于软件参数的设置保存. using System; using System.Collections.Generic; using System.Li ...
- linq to xml学习
http://www.cnblogs.com/greatverve/archive/2010/07/09/linq-to-xml-add-delete-update-query.html 记录一下,别 ...
- Linq学习笔记---Linq to Xml操作
LINQ to XML的成员, 属性列表: 属性 说明 Document 获取此 XObject 的 XDocument EmptySequence 获取空的元素集合 FirstAttribut ...
- LINQ to XML学习笔记
一.XML基础知识 1.XML:可扩展标记语言 Extensible Markup Language ,提供了一种保存数据的格式,数据可以通过这种格式很容易地在不同的应用程序之间实现共享. 2.使用X ...
- 第六篇 -- LINQ to XML
一.LINQ to XML常用成员 LINQ to XML的成员, 属性列表: 属性 说明 Document 获取此 XObject 的 XDocument EmptySequence 获取空的元 ...
- LINQ系列:LINQ to XML类
LINQ to XML由System.Xml.Linq namespace实现,该namespace包含处理XML时用到的所有类.在使用LINQ to XML时需要添加System.Xml.Linq. ...
- LINQ系列:LINQ to XML操作
LINQ to XML操作XML文件的方法,如创建XML文件.添加新的元素到XML文件中.修改XML文件中的元素.删除XML文件中的元素等. 1. 创建XML文件 string xmlFilePath ...
- LINQ系列:LINQ to XML查询
1. 读取XML文件 XDocument和XElement类都提供了导入XML文件的Load()方法,可以读取XML文件的内容,并转换为XDocument或XElement类的实例. 示例XML文件: ...
- Linq to Xml读取复杂xml(带命名空间)
前言:xml的操作方式有多种,但要论使用频繁程度,博主用得最多的还是Linq to xml的方式,觉得它使用起来很方便,就用那么几个方法就能完成简单xml的读写.之前做的一个项目有一个很变态的需求:C ...
随机推荐
- 用Python写单向链表和双向链表
链表是一种数据结构,链表在循环遍历的时候效率不高,但是在插入和删除时优势比较大. 链表由一个个节点组成. 单向链表的节点分为两个部分:存储的对象和对下一个节点的引用.注意是指向下一个节点. 而双向链表 ...
- suse11 sp4(虚拟机) 能ping通主机,但是主机ping不通suse虚拟机
sese的防火墙没关. 查看防火墙状态: rcSuSEfirewall2 status(必须是root账户,sudo都不行) 关闭防火墙:rcSuSEfirewall2 stop 事实上,防火墙有时候 ...
- Golang之http编程
Go原生支持http.import("net/http") Go的http服务性能和nginx比较接近 几行代码就可以实现一个web服务 服务端http package main ...
- db2 查看表空间使用率
1. 统计所有节点表空间使用率 select substr(TABLESPACE_NAME,1,20) as TBSPC_NAME,bigint(TOTAL_PAGES * PAGE_SIZE)/10 ...
- 三维dem
关注World wind Java,<World wind Java三维地理信息系统开发指南随书光盘 1. 下载worldwind java sdk 下载地址:http://builds.wor ...
- Codeforces 709C 模拟
C. Letters Cyclic Shift time limit per test:1 second memory limit per test:256 megabytes input:stand ...
- Codeforces 611C. New Year and Domino 动态规划
C. New Year and Domino time limit per test 3 seconds memory limit per test 256 megabytes input stand ...
- _GET_
_GET_:读取属性,没有自动创建
- 用户体验要好,App动画得这么做
以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具. 在用户体验设计方面,App动画的设计和添加,带给设计师无限的创造空间的同时,也成为设计师群体最具 ...
- mvc模拟实现
.定义httpmodule <system.webServer> <modules> <add name="UrlRoutingModule" typ ...