c# - 使用 LINQ 交换元素

标签 c# xml linq

我有一个以下格式的 xml 文档:

<body>
    <par id = "1">
      <prop type="Content">One</prop>
      <child xml:id="1">
        <span>This is span 1</span>
      </child>
      <child xml:id="2">
        <span>This is span 2</span>
      </child>
    </par>
</body>

我对使用 LINQ 不太熟悉,我想用它来交换上面代码的元素。 (即,我想搬家

<span>This is span 2</span>

进入

<child xml:id="1"></child>

元素树,反之亦然)

我正在运行 http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b 处的示例,但我真的很想朝正确的方向进一步插入(老实说,我不知道从哪里开始!)。

谢谢!

最佳答案

您可以使用 Linq to sml 查询选择特定元素

   var  retmodule = (from c in xdoc.Elements("body").Elements("par").Elements("child").
                             where c.Attribute("xml:id").Value == 2
                             select new 
                             {
                              c.Element("span").Value
                             }).SingleOrDefault();

然后使用xpath和xml库结合插入

XElement parentXElement = xmldoc.XPathSelectElement("products");
XElement refXElement = xdoc.XPathSelectElement("body/par/child [@xml:id = '2']");
XElement newXElement = new XElement("span", retmodule.ToString());
refXElement.AddAfterSelf(newXElement);
xdoc.Save();

关于c# - 使用 LINQ 交换元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10938448/

相关文章:

c# - 如何创建具有参数和私有(private)类型返回类型的快速调用委托(delegate),加速 DynamicInvoke

c# - 模拟静态方法 Activator.CreateInstance 以返回另一个类的模拟

python - 使用 lxml 解析具有嵌套命名空间的 XML 属性

java - 无法执行 android :onClick 的方法

c# - 我如何从 Devforce IdeaBlade 应用程序设置 context_info sql 语句

c# - 使用 LINQ 和 C# 从旧列表创建新列表

c# - .在 NET Core 3.1 依赖注入(inject)中使用工厂模式

c# - BooleanToVisibilityConverter,当 true 或 null 时转换为 Visible,当 false 时转换为 Collapsed

java - 通过 XPath 获取 HTML 元素的子元素

linq - 使用 OpenXML 和 LINQ 读取 Excel 工作表的第一行