您的位置:知识库 » 数据库

Linq To Xml学习 - 3.查询、更新、删除

作者: Q.Lee.lulu  来源: 博客园  发布时间: 2008-09-23 17:13  阅读: 45232 次  推荐: 6   原文链接   [收藏]  

函数构造方法

相比之下,函数方法包含用于形成新树的代码、从源树中选择元素和属性并在将其添加到新树中时进行相应的转换。 函数方法如下所示:

XElement root = XElement.Load("Data.xml");
XElement newTree = new XElement("Root",
    root.Element("Child1"),
    from att in root.Attributes()
    select new XElement(att.Name, (string)att)
);
Console.WriteLine(newTree);

在本例中,函数示例一点也不比第一个示例简短,而且一点也不比第一个示例简单。 但如果要对一个 XML 树进行很多更改,则非函数方法将变得非常复杂,而且会显得很笨拙。 相比之下,使用函数方法时,您只需形成所需的 XML,嵌入适当的查询和表达式以提取需要的内容。 函数方法生成的代码更易于维护。

请注意,在本例中,函数方法的执行效果可能没有树操作方法好。 主要问题是函数方法创建了更多短生存期的对象。 但是,如果使用函数方法能够提高程序员的效率,则折中也是一种有效的方式。

这是一个很简单的示例,但它显示了这两种方法之间基本原理上的差异。 对于转换较大的 XML 文档,函数方法可以产生更高的效率增益。

 

向 XML 树中添加元素、属性和节点

下面的方法将子内容添加到 XElement 或 XDocument 中:

方法                 说明

Add                  在 XContainer 的子内容的末尾添加内容。

AddFirst           在 XContainer 的子内容的开头添加内容。

下面的方法将内容添加为 XNode 的同级节点。 向其中添加同级内容的最常见的节点是 XElement,不过你也可以将有效的同级内容添加到其他类型的节点,例如 XText 或 XComment。

方法                         说明

AddAfterSelf            在 XNode 后面添加内容。

AddBeforeSelf          在 XNode 前面添加内容。

示例:

XElement srcTree = new XElement("Root", 
    new XElement("Element1", 1),
    new XElement("Element2", 2),
    new XElement("Element3", 3),
    new XElement("Element4", 4),
    new XElement("Element5", 5)
);
XElement xmlTree = new XElement("Root",
    new XElement("Child1", 1),
    new XElement("Child2", 2),
    new XElement("Child3", 3),
    new XElement("Child4", 4),
    new XElement("Child5", 5)
);
xmlTree.Add(new XElement("NewChild", "new content"));
xmlTree.Add(
    from el in srcTree.Elements()
    where (int)el > 3
    select el
);
// Even though Child9 does not exist in srcTree, the following statement will not
// throw an exception, and nothing will be added to xmlTree.
xmlTree.Add(srcTree.Element("Child9"));
Console.WriteLine(xmlTree);

输出结果:

<Root>
  <Child1>1Child1>
  <Child2>2Child2>
  <Child3>3Child3>
  <Child4>4Child4>
  <Child5>5Child5>
  <NewChild>new contentNewChild>
  <Element4>4Element4>
  <Element5>5Element5>
Root>

 

修改 XML 树中的元素、属性和节点

下表汇总了修改元素、元素的子元素或元素属性 (Attribute) 时可以使用的方法和属性 (Property)。

下面的方法修改 XElement。

方法

说明

XElement..::.Parse

用已分析的 XML 替换元素。

XElement..::.RemoveAll

移除元素的所有内容(子节点和属性)。

XElement..::.RemoveAttributes

移除元素的属性。

XElement..::.ReplaceAll

替换元素的所有内容(子节点和属性)。

XElement..::.ReplaceAttributes

替换元素的属性。

XElement..::.SetAttributeValue

设置属性的值。 如果该属性不存在,则创建该属性。 如果值设置为 null,则移除该属性。

XElement..::.SetElementValue

设置子元素的值。 如果该元素不存在,则创建该元素。 如果值设置为 null,则移除该元素。

XElement..::.Value

用指定的文本替换元素的内容(子节点)。

XElement..::.SetValue

设置元素的值。

下面的方法修改 XAttribute。

方法

说明

XAttribute..::.Value

设置属性的值。

XAttribute..::.SetValue

设置属性的值。

下面的方法修改 XNode(包括 XElement 或 XDocument)。

方法

说明

XNode..::.ReplaceWith

用新内容替换节点。

下面的方法修改 XContainer(XElement 或 XDocument)。

方法

说明

XContainer..::.ReplaceNodes

用新内容替换子节点。

6
0
标签:linq xml

数据库热门文章

    数据库最新文章

      最新新闻

        热门新闻