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 ...
随机推荐
- appcan更新
升级用到了config.xml文件中配置的‘更新地址‘所填写的url,此url开发者可任意配置自己的服务器地址* 当app执行uexWidget.checkUpdate()时,AppCan会请求上述u ...
- mac下将根目录/更改组到普通用户,导致sudo不能用
背景:这是个很愚蠢的故事,我更改了根目录下所有文件的拥有者为普通用户[chown -R xxx / ].结果sudo/su命令都不能用了…… 问题:一旦用sudo命令或su命令就提示: sudo: ...
- java内存模型:简单理解
1.Java内存模型(Java Memory Model,JMM) 2.JMM定义了线程和主内存之间的抽象关系: 线程之间的共享变量存储在主内存(main memory)中,每个线程都有一个私有的本地 ...
- suse11 sp4(虚拟机) 能ping通主机,但是主机ping不通suse虚拟机
sese的防火墙没关. 查看防火墙状态: rcSuSEfirewall2 status(必须是root账户,sudo都不行) 关闭防火墙:rcSuSEfirewall2 stop 事实上,防火墙有时候 ...
- app电池续航上&&下--Android自动化测试学习历程
章节:自动化基础篇——电池续航自动化测试上&&下 主要讲解内容及笔记: 一.影响手机电量的因素和理论: 下面是一个表格:当今主流手机显示屏技术.机型与功耗对照表: 技术 类型 ...
- cookie的基本用法
1.创建cookie对象 Cookie newCookie=new Cookie(String ky,String value); 2.写入cookie response.addCookie(newC ...
- 将C语言宏定义数值转换成字符串!
将C语言宏定义转换成字符串! 摘自:https://blog.csdn.net/happen23/article/details/50602667 2016年01月28日 19:15:47 六个九十度 ...
- httpclient学习(原创)
--httpmime-4.2.5.jar 跟提交Form相关的类 这一块主要post数据的提交.每一条数据同name和content组成.content可能是字节数组或是流.提交这一类(MIME)的 ...
- 简明PR教程
注意:本文供培训使用且仅为第一版 作者也不打算继续更新 本篇文章最早是在为内部培训时所编写的文章 有些疏漏且没有进行校正等工作 我尽力用最简单通俗的语言给大家介绍PR的使用方法 简明PR教程 1.编辑 ...
- 20155210 2016-2017-2 《Java程序设计》第7周学习总结
20155210 2016-2017-2 <Java程序设计>第7周学习总结 教材学习内容总结 时间的度量: GMT(Greenwich Mean Time)时间:现在不是标准时间 世界时 ...