我很难找到Linq方法来提取特定节点的值。
假设我的XML文件是这样的:
<?xml version="1.0" encoding="utf-8"?>
<Data>
<Month>
<Month_Number>1</Month_Number>
<Tool>
<Tool_Name>Help</Tool_Name>
<Count>1</Count>
</Tool>
</Month>
<Month>
<Month_Number>2</Month_Number>
<Tool>
<Tool_Name>On</Tool_Name>
<Count>1</Count>
</Tool>
</Month>
<Month>
<Month_Number>3</Month_Number>
<Tool>
<Tool_Name>Off</Tool_Name>
<Count>1</Count>
</Tool>
</Month>
</Data>我想从Count中提取值,它来自Tool和Tool_Name,其值为Off,在月份E 212,其中为E 1153E 216。
答案应该是1。然后我想将该值更改为2。
因此,由此产生的XML文件将是
<?xml version="1.0" encoding="utf-8"?>
<Data>
<Month>
<Month_Number>1</Month_Number>
<Tool>
<Tool_Name>Help</Tool_Name>
<Count>1</Count>
</Tool>
</Month>
<Month>
<Month_Number>2</Month_Number>
<Tool>
<Tool_Name>On</Tool_Name>
<Count>1</Count>
</Tool>
</Month>
<Month>
<Month_Number>3</Month_Number>
<Tool>
<Tool_Name>Off</Tool_Name>
<Count>2</Count>
</Tool>
</Month>
</Data>使用XMLDocument,我会做类似的事情
XmlDocument tallyFile = new XmlDocument();
tallyFile.Load(tallyFilePath);
XmlNode node = tallyFile["Data"];
foreach (XmlNode childNode in node.ChildNodes)
{
if (childNode["Month_Number"].InnerText.Equals("3")){}
}但我想使用XDocument实现上述目标。
发布于 2022-03-08 03:53:02
您能试一下这段代码吗,只需参考文档
using System.Xml.Linq;
XElement root = XElement.Load(tallyFilePath);
foreach (var month in root.Descendants("Month")
.Where(x => x.Descendants("Month_Number").First().Value == "3"))
{
Console.WriteLine(month);
//month.Value = "2";
}https://stackoverflow.com/questions/71389724
复制相似问题