我正在尝试在 .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/