如何使用c#删除和添加xml特定节点?

时间:2016-06-28 06:45:06

标签: c# xml

我有 XML 格式。我想从xml节点中删除特定标记。怎么做。

XML格式:

<?xml version="1.0"?>
<EmployeeResults>
  <MainArea>
    <CreationDateTime>2016-06-28T06:10:51.5215523Z</CreationDateTime>
  </MainArea>
  <SubArea>
    <Show>
      <ID>TEST1</ID>
    </Show>
    <ProductionPerformance>
      <ID>Fabrication_ERP_MES_DEM_1-A</ID>
      <ProductionResponse>
        <ID>123</ID>        
        <StartTime>0001-01-01T00:00:00Z</StartTime>
        <EndTime>0001-01-01T00:00:00Z</EndTime>
        <EmployeeResponse>
          <ID>LotEmployeeResponse</ID>          
          <ActualStartTime>2016-06-28T05:58:41.673Z</ActualStartTime>
          <ActualEndTime>0001-01-01T00:00:00Z</ActualEndTime>            
            <Quantity>
              <QuantityString>1</QuantityString>
            </Quantity>
          </MaterialActual>
          <TagName1>
            <ID>Test1</ID>
          </TagName1>
          <TagName2>
            <ID>Test2</ID>
          </TagName2>
        </EmployeeResponse>
      </ProductionResponse>
    </ProductionPerformance>
  </SubArea>
</EmployeeResults>

我想删除TagName1节点&amp;为TagName3添加新标记名称。如何删除和添加新节点。

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

这应该这样做。 xmlInput是您的xml字符串,使用xpath选择特定元素。 https://msdn.microsoft.com/en-us/library/d271ytdx(v=vs.110).aspx

XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlInput);

XmlNode node = doc.SelectSingleNode("XPATh");


if (node != null)
{
   node.Remove();
}

答案 1 :(得分:0)

我建议您使用LinqXml

XDocument doc= XDocument.Load(filepath);

// Remove the element
doc.Descendants("TagName1")
   .Remove();

// Add new Element - Test3
doc.Descendants("EmployeeResponse")
   .ElementAtOrDefault(0)
   .Add(new XElement("TagName3", new XElement("ID", "Test3")));

检查Demo