提问人:Jim G. 提问时间:11/1/2023 最后编辑:Jim G. 更新时间:11/22/2023 访问量:64
C#如何替换两个xml元素值?
C# How Can I Replace Two Xml Element Values?
问:
起始代码:
var xDocument = XDocument.Parse(rawXmlString);
想象一下,我已经在 XDocument 中加载了下面的 XML,并且我想使用 Linq-to-XML:
<ParameterValues>
<ParameterValue>
<Name>Head Coach</Name>
<Value>Bill Belichick</Value>
</ParameterValue>
<ParameterValue>
<Name>Quarterback</Name>
<Value>Mac Jones</Value>
</ParameterValue>
</ParameterValues>
使用 C#,分别关闭值和,如何替换:Name
Head Coach
Quarterback
Bill Belichick
跟?Mike Vrabel
Mac Jones
跟?Kirk Cousins
- 此外,如果有帮助,此 XML 文档将仅存在于内存中。它 不会保存到文件中。
ParameterValues
确实会是 根节点。- 节点可能出现故障,总有一天
可能有两个以上的子节点。
ParameterValue
我尝试过:
var xDocument = XDocument.Parse(rawXmlString);
我已经尝试了各种 Linq-to-XML 查询方法,但到目前为止没有太多运气。
答:
3赞
Yitzhak Khabinsky
11/1/2023
#1
这里是通过 LINQ to XML 实现的。
c#
void Main()
{
const string NEWHEADCOACH = "Mike Vrabel";
const string NEWQUARTERBACK = "Kirk Cousins";
XDocument xdoc = XDocument.Parse(@"<ParameterValues>
<ParameterValue>
<Name>Head Coach</Name>
<Value>Bill Belichick</Value>
</ParameterValue>
<ParameterValue>
<Name>Quarterback</Name>
<Value>Mac Jones</Value>
</ParameterValue>
</ParameterValues>");
xdoc.Descendants("ParameterValue")
.Where(x => x.Element("Name").Value == "Head Coach")
.Elements("Value").FirstOrDefault()?.SetValue(NEWHEADCOACH);
xdoc.Descendants("ParameterValue")
.Where(x => x.Element("Name").Value == "Quarterback")
.Elements("Value").FirstOrDefault()?.SetValue(NEWQUARTERBACK);
Console.WriteLine(xdoc);
}
输出
<ParameterValues>
<ParameterValue>
<Name>Head Coach</Name>
<Value>Mike Vrabel</Value>
</ParameterValue>
<ParameterValue>
<Name>Quarterback</Name>
<Value>Kirk Cousins</Value>
</ParameterValue>
</ParameterValues>
下一个:反序列化泛型 Dto 的包装器
评论