c# - 使用Linq过滤掉特定元素内容

标签 c# .net xml linq

我正在尝试在 .Net 应用程序中使用 LINQ 从我保存到数据库的 XML 中过滤掉个人数据。

示例 XML

<?xml version="1.0" encoding="UTF-8"?>
<body>
         <Details>
            <Id>1</Id>
            <objectList>
               <object>
                  <Key>Account</Key>
                  <Value>12345</Value>
               </object>
               <object>
                  <Key>Password</Key>
                  <Value>abcd</Value>
               </object>
            </objectList>
         </Details>
</Body>

我的工作:

var xmlFile = File.ReadAllText("Test.xml");
var xDoc = XDocument.Parse(xmlFile);
var newXDoc = xDoc.Descendants().Where(e => e.Name.LocalName == "Value").ToList().ForEach(e => e.Value = "FILTERED");

但是,这过滤了你为所有对象的值。

我要做的是仅过滤特定对象的值,例如,其中 Key 等于“密码”

有办法吗?

最佳答案

您可以执行以下操作:

var objectValue="Password";
var result= xDoc.Descendants("object").Where(e => e.Element("Key").Value==objectValue);
foreach(var e in result)
{
   e.Element("Value").Value = "FILTERED";
}

首先根据您要应用的条件过滤对象,然后更改 Value 节点的值,如上所示。

关于c# - 使用Linq过滤掉特定元素内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45963738/

相关文章:

c# - 使用 LINQ 从多维数组中提取特定值

javascript - .NET 的 JavaScript 中的 Match.Result

.net - 加载大量小图像时出现 OutOfMemory 异常

.net - 如何从 kubernetes 部署配置文件中的 helm 获取运行时设置以覆盖 asp.net 中的 appsettings

python - 如何让 minidom 忽略 namespace ?

c# - 更改支持的方向

java - Android:XmlPullParserFactory.newInstance 说找不到符号类 newInstance

c# - 为什么我预期的空对象不为空?

c# - 在 C# 中创建一个循环链表?

C# 读/写 Mifare NFC 标签