Search code examples
c#xmldocument

How to remove a tag from XML Document using C#?


<sg>
       <userdata>
            <data>
             <tag name="gf" description="fg" nodeid="                                                      {2F2CC6951E2B4EEA979F357164CB73E5}" controllerid="" keytype="" mask="" track="widthsegment"    numkey="" interpolator="" frame="" aindex="1" number="1">
              <![CDATA[  //sg/objects/object[@id="          {2F2CC6951E2B4EEA979F357164CB73E5}"]/params/param[@name="widthsegment"]
               ]]> 
               </tag>
              <tag name="gf" description="fg" nodeid="               {2F2CC6951E2B4EEA979F357164CB73E5}" controllerid="" keytype="" mask="" track="widthsegment"                       numkey="" interpolator="" frame="" aindex="1" number="2">
               <![CDATA[  //sg/objects/object[@id="                         {2F2CC6951E2B4EEA979F357164CB73E5}"]/params/param[@name="widthsegment"]
              ]]> 
              </tag>
                </data>
               </userdata>
                    </sg>

I want to remove the " tag " - tag from this how to do this

I made like this

updatedData.SelectSingleNode("//tag[@name='" + 1 + "']").RemoveAll(); 

But still tag comes in this .. i mean empty tag .. how to remove that

after that

                   <sg>
                    <userdata>
                      <data>
                      <tag /> --- This is wat i want to remove... how to remove this
                       <tag name="gf" description="fg" nodeid="        {2F2CC6951E2B4EEA979F357164CB73E5}" controllerid="" keytype="" mask="" track="widthsegment"      numkey="" interpolator="" frame="" aindex="1" number="2">
                      <![CDATA[  //sg/objects/object[@id="           {2F2CC6951E2B4EEA979F357164CB73E5}"]/params/param[@name="widthsegment"]
                    ]]> 
                     </tag>
                      </data>


Solution

  • XmlNodeList nodes = updatedData.GetElementsByTagName("tagname");
    foreach (XmlNode node in nodes)
    {
        if (node.ChildNodes.Count == 0)
            node.RemoveAll();
        else
            UpdateDoc.InnerXml = node.OuterXml;
    }
    

    I solved this ...