如何在 linq to xml 中交换两个 XML 元素

2024-01-20

我想交换两个 xml 元素。我该怎么做呢?这是代码。我尝试了解决方案here https://stackoverflow.com/questions/3695806/linq-to-xml-what-is-the-most-effective-way-to-move-nodes-up-and-down但它毕竟对我不起作用。我想交换这两个元素。当我运行程序时,元素不会交换,但是当我调用 ToList() 时,它会在列表中交换,但不会在doc多变的

<template id="12">
  <tabs>
    <tab>
      <name>test1</name>
      <description />
    </tab>
    <tab>
      <name>test2</name>
      <description />
    </tab>
  </tabs>
</template>

这是交换它们的代码

        var doc = XDocument.Parse(q.XMLtext);
        var Current = doc.ElementOrDefault("template").ElementOrDefault("tabs").ElementsOrDefault("tab").Where(x => (string)x.Element("name") == name).FirstOrDefault();
        var Previous = Current.PreviousNode as XElement;
        var Next = Current.NextNode as XElement;
        var CurrentName = (string)Current.ElementOrDefault("name");
        var PreviousName = (string)Previous.ElementOrDefault("name");
        var NextName = (string)Next.ElementOrDefault("name");
        if (MoveDirection == (int)MoveType.Up)
        {
            doc.ElementOrDefault("template").ElementOrDefault("tabs").ElementsOrDefault("tab").Where(x => (string)x.Element("name") == CurrentName || (string)x.Element("name") == PreviousName).Reverse();

        }
        else
            //doc.ElementOrDefault("template").ElementOrDefault("tabs").ElementsOrDefault("tab").Where(x => x == Current || x == Next).Take(2).Reverse();

        q.XMLtext = doc.ToString();
        context.SaveChanges();

恐怕我还没有完全弄清楚你想要交换哪些元素,但是XElement.ReplaceWith http://msdn.microsoft.com/en-us/library/system.xml.linq.xelement.replacewith.aspx我相信这就是你所追求的。这是一个简短但完整的程序来演示它:

using System;
using System.Xml.Linq;

class Program
{
    static void Main()
    {
        string xml = @"
<root>
  <element1/>
  <element2/>
  <element3/>
  <element4/>
  <element5/>
</root>";
        XDocument doc = XDocument.Parse(xml);
        XElement x = doc.Root.Element("element2");
        XElement y = doc.Root.Element("element4");
        x.ReplaceWith(y);
        y.ReplaceWith(x);
        Console.WriteLine(doc);
    }
}

这个交换element2 and element4.

请注意,这是有效的,因为第一个x.ReplaceWith(y)实际上创建了一个copy of y,将原来的留在现有位置...准备替换为x.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 linq to xml 中交换两个 XML 元素 的相关文章

  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • 扩展 XSD 文件

    我有一个带有枚举类型的 XSD 文件 我想创建一个 扩展 XSD 文件 它添加一些额外的枚举 但其他方面的行为就像主 XSD 一样 例如 主 XSD 文件包含以下内容
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使

随机推荐

  • 如何捕获 Rails 中的 500 内部服务器错误

    我以前在从数据库等获取内容时已经做过很多次了 对于我的具体情况 我正在使用第三者 https github com vigetlabs ruby spark blob master lib ruby spark device rb连接到一个
  • (Tensorflow-GPU)导入tensorflow ImportError:找不到'cudnn64_7.dll'

    在anaconda下创建tensorflow环境后 我安装了tensorflow gpu 然后我尝试导入tensorflow来验证它是否正确安装 但出现此错误 ImportError Could not find cudnn64 7 dll
  • 在 Python 中实现 Prolog 统一算法?回溯

    我正在尝试实现统一 但遇到了问题 已经有十几个例子了 但他们所做的只是把水搅浑 我感到更加困惑而不是开悟 http www cs trincoll edu ram cpsc352 notes unification html http ww
  • 我无法使用 Docker 和 Passenger/nginx 映像运行 Rails 控制台

    我有下一个 docker compose 容器 docker compose yml version 2 services web build ports 80 80 volumes home app NAME OF MY APP db i
  • 解析 JSON 比解析 XML 快吗

    我正在创建一个复杂的 JavaScript 库 用于与我公司的服务器端框架配合使用 服务器端框架将其数据编码为简单的 XML 格式 没有花哨的命名空间或类似的东西 理想情况下 我想将浏览器中的所有数据解析为 JSON 但是 如果我这样做 我
  • 使用简单 XML PHP 解析 SOAP 响应

    使用 simplexml 传递 SOAP 响应后 我得到以下输出 我如何获取域的属性值 即名称和可用性 使用的代码 xmlString preg replace lt w gt gt 1 2 3 result xml simplexml l
  • Odata v4 错误“不支持非开放类型中的无类型值”

    当我更新模型时 它抛出 不支持非开放类型中的无类型值 更新之前它可以工作 无法确定问题的根源 有任何想法吗 我以前遇到过这个错误 它是由于传递数据模型上不存在的 JSON 对象的属性引起的 例如 给定数据模型 public class Us
  • imagemagick Convert.exe错误

    我将planets png转换为planets jpg的代码 仅显示空白页是行不通的 我已经安装了 imagemagick 如 phpinfo 中所示在这里查看 https i stack imgur com IRJlG png 这里还有运
  • .NET XML 反序列化忽略命名空间

    我收到了数千个遵循相同架构 结构的 XML 文件 我实现了 IXmlSerialized 因此我自己读取元素和属性 我的问题是这些文件各自使用不同的虚假名称空间 这些文件来自其他来源 所以我无法更改 D 此外 这些命名空间太多 我无法构建可
  • localhost 可以工作,但在 Windows 7 中 127.0.0.1 不工作

    我在 Windows 7 上运行 xampp 当我这样做时http localhost 我在网络浏览器中看到 xampp 欢迎屏幕 但是http 127 0 0 1不起作用 在我的 Windows 主机文件中 我取消了 127 0 0 1
  • charAt 返回为未定义

    我有以下函数 但它说 charAt 未定义 该错误与警报线有关 如果我执行警报 值 它给我的值没有问题 scope markAnswer function answerID questionID if scope containsObjec
  • 如何在没有 vscode 的情况下运行现有的语言服务器

    我正在尝试开发自己的具有语言服务器协议支持的 IDE 因此我下载了用 typescript 编写的语言服务器并尝试使用 Node js 启动它们 首先 我用webpack打包了服务器包 然后使用命令 node server js 启动 se
  • 如何在 GCC 命令行上定义字符串文字?

    在 GCC 命令行上 我想定义一个字符串 例如 Dname Mary https gcc gnu org onlinedocs gcc Preprocessor Options html index D 1 然后在源代码中 我想要print
  • 链接下载图像而不是查看图像

    我需要向网站访问者提供下载原始高分辨率图像的链接 如果我只是使用 href image jpg 链接到图像 浏览器就会显示该图像 如何让浏览器下载它 我正在使用亚马逊 S3 来服务器这些图像 如果这需要在图像上设置特殊的标头 我确信这是可能
  • 带有 C++ DLL 的 Excel-VBA 有时会崩溃

    我制作了非常简单的 c dll 只有一个函数 int DLL EXPORT stdcall foo double source return 0 我正在尝试这样使用它 Option Explicit Private Declare PtrS
  • 在 iOS 上从内存数据流播放音频

    我正在将音频库移植到 iOS 允许播放回调提供的音频流 用户提供返回原始 PCM 数据的回调 我需要播放该数据 此外 该库必须能够同时播放多个流 我想我需要使用 AVFoundation 但似乎 AVAudioPlayer 不支持流式音频缓
  • 使用 hibernate 事件侦听器更新其他实体中的非规范化值

    我们有一个基于休眠的应用程序 该应用程序已经使用拦截器来触发审计跟踪的创建 它通过挂钩 beforeTransactionComplete 机制来实现此目的 将每个实体的最终状态复制到审核表中 所有实体都有一个版本号 当发生更改时该版本号会
  • Android:File() 的资产文件夹路径?

    我的项目的资产文件夹中有一些文件 我想列出它们 所以我将其放入我的代码中 File dir new File com packagename assets fonts File fileList dir listFiles 我应该采取哪条路
  • Selenium WebDriver 默认使用什么配置文件?

    Selenium WebDriver 又名 Selenium 2 从哪里获取打开 FirefoxDriver 时使用的匿名配置文件 如果它使用 Firefox 的默认值 appdata roaming mozilla firefox pro
  • 如何在 linq to xml 中交换两个 XML 元素

    我想交换两个 xml 元素 我该怎么做呢 这是代码 我尝试了解决方案here https stackoverflow com questions 3695806 linq to xml what is the most effective