从 XElement 中删除属性

2024-01-02

我正在尝试从 xml 文档中删除一些属性。这是我尝试过的:

private void RemoveEmptyNamespace(XElement element) {
            foreach (XElement el in element.Elements()) {
                if (el.Attribute("xmlns") != null && el.Attribute("xmlns").Value == string.Empty)
                    el.Attribute("xmlns").Remove();
                if (el.HasElements)
                    RemoveEmptyNamespace(el);
            }
        }

但这不起作用。当我在方法内部调试时,属性被删除,但是当方法完全执行时,没有保存任何更改。该文件是相同的。我想这是因为 foreach 循环,但我没有看到其他循环方式。

任何建议表示赞赏。

编辑:这是我正在使用的整个代码:

        var file = new FileStream(destinationPath, FileMode.Open);
        var doc = new XDocument();
        doc = XDocument.Load(savedFile);
        RemoveEmptyNamespace(doc.Root);//method above
        file.SetLength(0);
        doc.Save(file);
        file.Close();

EDIT2:现在我尝试通过逐行替换字符串来实现相同的目标。并且什么也没有发生!!!文件还是一样的。如果有人有类似的问题,请帮助我。


我已经找到了真正的问题所在。每次我更改文档中的某些内容时,XDocument 类都会添加空白 xmlns!这就是为什么我无法删除它们。它的行为与此类似,因为它需要为您创建的每个 XElement 定义命名空间。所以我就这样解决了这个问题。唯一需要做的就是将命名空间添加到 XElement 名称。像这样的事情:

XNamespace nameSpace = "http://schemas.microsoft.com/developer/msbuild/2003";
var subType = new XElement(nameSpace + "SubType"); // strange but true

我希望这能帮助有同样问题的人。谢谢大家的回答。

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

从 XElement 中删除属性 的相关文章

  • 向进度条添加百分比文本 C#

    我有一个方法可以显示进程栏何时正在执行以及何时成功完成 我工作得很好 但我想添加一个百分比 如果完成 则显示 100 如果卡在某个地方 则显示更少 我在网上做了一些研究 但我无法适应我正在寻找的解决方案 这是我的代码 private voi
  • 在 C++ 中使用 matlab 结构(matlab 函数调用的返回值)(由 matlab 编译器生成的库)

    你好 我有一个相当简单的 matlab 函数 例如 function MYSTRUCT myfunc MYSTRUCT prop1 test MYSTRUCT prop2 foo MYSTRUCT prop3 42 end 我用 matla
  • 如何在c++中读取pcap文件来获取数据包信息?

    我想用 C 编写一个程序来读取 pcap 文件并获取数据包的信息 例如 len sourc ip flags 等 现在我找到了如下代码 我认为它会帮助我获取信息 但是我有一些疑问 首先我想知道应该将哪个库添加到我的程序中 然后什么是 pca
  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • 在 DataView 的 RowFilter 中选择 DISTINCT

    我试图根据与另一个表的关系缩小 DataView 中的行范围 我使用的 RowFilter 如下 dv new DataView myDS myTable id IN SELECT DISTINCT parentID FROM myOthe
  • ClickOnce 应用程序错误:部署和应用程序没有匹配的安全区域

    我在 IE 中使用 FireFox 和 Chrome 的 ClickOnce 应用程序时遇到问题 它工作正常 异常的详细信息是 PLATFORM VERSION INFO Windows 6 1 7600 0 Win32NT Common
  • 如何使用 LINQ2SQL 连接两个不同上下文的表?

    我的应用程序中有 2 个数据上下文 不同的数据库 并且需要能够通过上下文 B 中的表的右连接来查询上下文 A 中的表 我该如何在 LINQ2SQL 中执行此操作 Why 我们正在使用 SaaS 产品来跟踪我们的时间 项目等 并希望向该产品发
  • 由 IHttpClientFactory 注入时模拟 HttpClient 处理程序

    我创建了一个自定义库 它会自动为依赖于特定服务的 Polly 策略设置HttpClient 这是使用以下方法完成的IServiceCollection扩展方法和类型化客户端方法 一个简化的例子 public static IHttpClie
  • 将 Word 文档另存为图像

    我正在使用下面的代码将 Word 文档转换为图像文件 但是图片显得太大 内容不适合 有没有办法渲染图片或将图片保存到合适的尺寸 private void btnConvert Click object sender EventArgs e
  • 在 C 中初始化变量

    我知道有时如果你不初始化int 如果打印整数 您将得到一个随机数 但将所有内容初始化为零似乎有点愚蠢 我问这个问题是因为我正在评论我的 C 项目 而且我对缩进非常直接 并且它可以完全编译 90 90 谢谢 Stackoverflow 但我想
  • 在 Visual Studio 2010 中从 Fortran 调用 C++ 函数

    我想从 Fortran 调用 C 函数 为此 我在 Visual Studio 2010 中创建了一个 FORTRAN 项目 之后 我将一个 Cpp 项目添加到该 FORTRAN 项目中 当我要构建程序时出现以下错误 Error 1 unr
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • 我可以使用 moq Mock 来模拟类而不是接口吗?

    正在经历https github com Moq moq4 wiki Quickstart https github com Moq moq4 wiki Quickstart 我看到它 Mock 一个接口 我的遗留代码中有一个没有接口的类
  • DbContext 和 ObjectContext 有什么区别

    From MSDN 表示工作单元和存储库模式的组合 使您能够查询数据库并将更改分组在一起 然后将这些更改作为一个单元写回存储 DbContext在概念上类似于ObjectContext 我虽然DbContext只处理与数据库的连接以及针对数
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的
  • C# HashSet 只读解决方法

    这是示例代码 static class Store private static List
  • “接口”类似于 boost::bind 的语义

    我希望能够将 Java 的接口语义与 C 结合起来 起初 我用过boost signal为给定事件回调显式注册的成员函数 这非常有效 但后来我发现一些函数回调池是相关的 因此将它们抽象出来并立即注册所有实例的相关回调是有意义的 但我了解到的
  • 使用 %d 打印 unsigned long long

    为什么我打印以下内容时得到 1 unsigned long long int largestIntegerInC 18446744073709551615LL printf largestIntegerInC d n largestInte
  • 无法接收 UDP Windows RT

    我正在为 Windows 8 RT 编写一个 Windows Store Metro Modern RT 应用程序 需要在端口 49030 上接收 UDP 数据包 但我似乎无法接收任何数据包 我已按照使用教程进行操作DatagramSock
  • 使用 .NET Process.Start 运行时挂起进程 - 出了什么问题?

    我在 svn exe 周围编写了一个快速而肮脏的包装器来检索一些内容并对其执行某些操作 但对于某些输入 它偶尔会重复挂起并且无法完成 例如 一个调用是 svn list svn list http myserver 84 svn Docum

随机推荐

  • 如何从电子邮件地址获取 SMTP 服务器

    我想通过特殊的电子邮件帐户自动发送邮件 但现在 我只知道电子邮件地址 电子邮件受保护 cdn cgi l email protection和密码 那么你知道如何获取 SMTP 服务器吗 下面是我的 C 代码 SmtpClient clien
  • Perl:何时释放不需要的标量内存而不超出范围?

    我有一个应用程序 可以将大量文本数据读取为标量 有时甚至是 GB 大小 我用substr在该标量上将大部分数据读取到另一个标量中 并将提取的数据替换为空字符串 因为第一个标量中不再需要它 我最近发现 Perl 没有释放第一个标量的内存 但它
  • 单击时,循环遍历每个对象键

    我还在学习 JS 有些东西比其他人更难理解 就像这样 我试图通过允许用户单击自定义按钮来更改谷歌地图的主题 我正在使用 if else 效果很好 但我想添加更多主题并使用循环 用户每次单击时 都会选择 object key 0 then c
  • 从 C++ 调用 DLL 中的函数

    我在 VS 2008 中有一个解决方案 其中有 2 个项目 一个是用 C 编写的 DLL 另一个是从空白项目创建的简单 C 控制台应用程序 我想知道如何从应用程序调用 DLL 中的函数 假设我从一个空白的 C 项目开始 并且我想调用一个名为
  • 打印所有定义的变量和值

    这只是为我提供了已定义变量的数组 但没有打印出任何变量 我怎样才能打印值 另外我可以使用什么函数以这种格式输出所有定义的变量 变量名称 变量类型 int array string bool 在线定义变量 脚本中定义的变量 使用次数可变 变量
  • 了解并发.futures.Executor.map()

    我正在尝试使用进程并行化一些Python代码concurrent futures https docs python org 3 library concurrent futures html 看起来我可以通过以下方式多次并行执行一个函数提
  • Windows 服务启动/停止另一个服务

    我用 C 编写的服务有一个小问题 该服务本身运行正常并且在 SYSTEM 帐户下运行 在一个执行点期间 我必须启动或停止另一项服务 然而 这是行不通的 致电给OpenService 返回错误代码 5 即 访问被拒绝 提供更多细节 我必须启动
  • 列表到字典

    我有一个List
  • 如何在 SQL Server 中选择连续重复项

    我想从 SQL Server 表中选择重复的条目 但前提是 id 是连续的 我一直在努力扭转这个答案 https stackoverflow com a 3298645 1778169满足我的需要 但我无法让它工作 上面的答案是针对Orac
  • AudioKit - 如何从麦克风获取实时 floatChannelData?

    我是 Audiokit 的新手 我正在尝试对来自麦克风的输入音频进行一些实时数字信号处理 我知道我想要的数据在AKAudioFile的FloatChannelData中 但是如果我想实时获取这个数据怎么办 我目前正在使用 AKMicroph
  • 通过门户从 Azure Cosmos DB 删除所有/多个文档

    是否可以通过 azure 门户 Azure cosmos SQL 查询或 power shell 脚本删除集合中的所有 多个可用文档 根据我的经验 删除所有文档的最快方法是将容器上的 生存时间 设置为 1 秒 这将删除所有文档 但请注意 此
  • 验证 CSS 选择器

    有没有办法以编程方式检查 javascript jquery 选择器的有效性 like class还好但是 class is not 以 JavaScript 或任何后端语言编程 除了通过 jQuery 源代码 所以在伪代码中 def se
  • Maven2 和 Swing 项目:构建并运行 swing 应用程序

    我试图找到有关如何使用 Maven 构建和运行 swing 应用程序的信息 但找不到任何有用的信息 maven 文档一团糟 有人可以指出我相关的文档吗 有人在 Swing 开发中使用 Maven 吗 我猜您想从 Maven 命令运行您的应用
  • 控制 Facebook iFrame 应用程序父框架的滚动位置

    我已经有一个 Facebook iFrame 应用程序愉快地启动并运行 但我意识到由于跨域问题 我没有办法处理父框架的滚动位置 如果用户在页面上点击太远 我无法将它们弹出到顶部 有没有人有幸使用 Facebook JS 库或其他 JavaS
  • 如何更改内容安全策略指令以允许 addThis 小部件?

    我正在制作一个使用 webpack 的网站 我正要启动它并且我想穿上addThis分享小部件 我正在添加addThis代码在index html按照建议关闭正文标签之前addThis 像这样 这会在 chrome inspect 控制台中生
  • 如何以编程方式为 WCF 服务设置单个端点

    我试图允许用户配置 WCF 服务 包括该服务侦听的 IP 和端口号 用户有一个单独的配置应用程序 允许设置这些值 但我遇到的问题是 app config 必须定义一个端点才能创建新的 ServiceHost 条目 但我的端点正在被在单独的配
  • 在负载均衡器后面运行 daphne 的多个实例:django-channels

    我在用django channels to add HTTP2 WebSocket支持我的申请 我找不到很多关于如何扩展通道的文档 下面是我的nginx负载平衡多个实例的配置daphne运行在同一台机器但不同的端口上 这是正确的方法吗 up
  • 有没有办法创建私人频道的 SharePoint 网站?

    目前 我们在使用 teams 图形 API 端点创建的团队上创建私有频道时遇到问题 从 Graph API 添加专用通道时 不会配置与该通道关联的 SharePoint 网站 用户需要访问 MSTeams 客户端中的 文件 选项卡才能创建站
  • 定义常量变量的最佳方法是什么 python 3 [重复]

    这个问题在这里已经有答案了 我正在用 python 编写一个程序 其中包含许多常量变量 我想创建一个文件来保存所有这些变量 例如 h文件输入C其中包含许多 define 我尝试使用配置解析器 https docs python org 3
  • 从 XElement 中删除属性

    我正在尝试从 xml 文档中删除一些属性 这是我尝试过的 private void RemoveEmptyNamespace XElement element foreach XElement el in element Elements