删除没有子元素的元素

问题描述 投票:0回答:1

使用XElement的XML的结构如下所示。我在XDocument中使用XElement

<?xml version='1.0' encoding='UTF-8'?>
<return xmlns:rmas="" xmlns:xsi="" xsi:noNamespaceSchemaLocation="">
  <header>
    [...]
  </header>
  <body>
     <scheme>
        [...]
        <data>
          <serial-no>1</serial-no>
          <employment>1</employment>
          <code>1234</code>
        </data>
        <data />
        <data />
     </scheme>
     <scheme>
        [...]
        <data>
          <serial-no>1</serial-no>
          <employment>1</employment>
          <code>1234</code>
        </data>
        <data />
        <data />
     </scheme>
     <scheme>
        [...]
        <data>
          <serial-no>1</serial-no>
          <employment>1</employment>
          <code>1234</code>
        </data>
        <data />
        <data />
     </scheme>
  </body>
</return>

我想删除所有没有子元素(即<data />元素)的数据元素。这是我的代码

 foreach (XElement scheme in doc.Descendants("scheme"))
 {
            //copy an existing node as template for new data node.
            XElement newData = XElement.Parse(scheme.Element("data").ToString());
            newData.Element("serial-no").SetValue("abc1234");
            newData.Element("employment").SetValue("PUZAD-452");
            newData.Element("code").SetValue(codeValue);


            XElement newData2 = XElement.Parse(scheme.Element("data").ToString());
            newData2.Element("serial-no").SetValue("abc1234");
            newData2.Element("employment").SetValue("PUZAD-452");
            newData2.Element("code").SetValue(codeValue);


            XElement newData3 = XElement.Parse(scheme.Element("data").ToString());
            newData3.Element("serial-no").SetValue("abc1234");
            newData3.Element("employment").SetValue("PUZAD-452");
            newData3.Element("code").SetValue(codeValue);

            if (getGlobalScheme1 == "1111")
            {
                if ((string)(scheme.Descendants("code").First()) == "1111")
                {
                    newData2.RemoveAll();
                    newData3.RemoveAll();
                }
                scheme.Add(newData);
            }
            if (getGlobalScheme2 == "2222")
            {
                if ((string)(scheme.Descendants("code").First()) == "2222")
                {
                    newData.RemoveAll();
                    newData3.RemoveAll();
                }
                scheme.Add(newData2);
            }

            if (getGlobalScheme3 == "3333")
            {
                if ((string)(scheme.Descendants("code").Last()) == "3333")
                {
                    newData.RemoveAll();
                    newData2.RemoveAll();
                }
                scheme.Add(newData3);
            }
}

我如何实现删除没有子元素的<data />元素的目标。我一直在努力解决这个问题,但无济于事。

c# xml xml-parsing xmldocument xelement
1个回答
0
投票

我会尽力回答。

© www.soinside.com 2019 - 2024. All rights reserved.