起始代码:
var xDocument = XDocument.Parse(rawXmlString);
想象一下,我已将下面的 XML 加载到 XDocument 中,并且我想使用 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
?ParameterValues
确实会是
根节点。ParameterValue
节点可能会出现故障,有一天
可能有两个以上的子节点。我尝试过的:
var xDocument = XDocument.Parse(rawXmlString);
我已经尝试过各种 Linq-to-XML 查询方法,但到目前为止运气不佳。
这里是通过 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>