簡體   English   中英

如何在 C# 中更新 XML 文檔的特定子節點值

[英]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 的示例:

https://dotnetfiddle.net/2Fe2ss

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM