[英]How to Update a Specific Child Node Value of XML Document in C#
我有一个像下面这样的方法,我从另一个方法中获取所有参数值,其中
type = DeviceParameters
sourceXml = <?xml version="1.0" encoding="utf-16"?>
<ProductCode>
<DeviceParameters>
<P65>True</P65>
<HWVersion>1</HWVersion>
<Test>Test</Test>
<Test>hello</Test>
</DeviceParameters>
<FirmwareGates>
<Firmware>120.0.23</Firmware>
</FirmwareGates>
<ModemIncludeList>
<Modem>Test</Modem>
<ModemFirmware>2</ModemFirmware>
</ModemIncludeList>
</ProductCode>
oldParameterName= Test
oldParameterValue= hello
newParameterName = Test
parameterValue = hello123
我正在尝试将节点<Test>hello</Test>
的值更新为<Test>hello123</Test>
编辑:我试图删除参数并使用新值读取,但似乎更困难。 有什么方法可以更新值吗?
private string EditParameter(TesterParameterCodeType type, string sourceXml, string oldParameterName, string oldParameterValue, string newParameterName, string parameterValue, int index)
{
XDocument doc = XDocument.Parse(sourceXml); // or XDocument.Parse(string)
doc.Root.Descendants().Where(e => e.Name == oldParameterName && e.Value == oldParameterValue).Remove();
var stringWriter = new StringWriter();
doc.Save(stringWriter);
return stringWriter.ToString();
}
要使 InnerText 属性在自动完成中可用,只需更改您使用的节点变量的正确类型
foreach (XmlElement node in parameterNode)
要删除节点中的节点,只需选择节点的父节点并从父节点中删除当前节点:
if(node.InnerText == parameterValue)
{
var parentNode = node.ParentNode;
parentNode.RemoveChild(node);
}
您可以在此链接中查看完整 conde 的示例:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.