(1) Позволяет сохранить XML в виде файла в файловой системе.
(2) Мы создадим список List<XElement>
из SCHEME узлов.
(3) Выполнить итерацию по списку SCHEME узлов и удалить DATA элементы без дочерних элементов.
(4) Сохранить измененное XML обратно в файл .
XML Файл
<?xml version="1.0" encoding="UTF-8"?>
<return xmlns:rmas="someURI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="fafa.xsd">
<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>
c#
void Main()
{
const string fileName = @"e:\Temp\Delete.xml";
const string SCHEME = "scheme";
const string DATA = "data";
XDocument xdoc = XDocument.Load(fileName);
// create list of SCHEME nodes
List<XElement> nodes = xdoc.Descendants(SCHEME).ToList();
// iterate through list of SCHEME nodes and delete DATA elements without children.
foreach (XElement node in nodes)
node.Elements(DATA).Where(n => n.DescendantNodes().Count() == 0).Remove();
// end result
Console.WriteLine(xdoc);
// save back
// xdoc.Save(fileName);
}
Выход XML
<return xmlns:rmas="someURI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="fafa.xsd">
<header>[...]</header>
<body>
<scheme>
<data>
<serial-no>1</serial-no>
<employment>1</employment>
<code>1234</code>
</data>
</scheme>
<scheme>
<data>
<serial-no>1</serial-no>
<employment>1</employment>
<code>1234</code>
</data>
</scheme>
<scheme>
<data>
<serial-no>1</serial-no>
<employment>1</employment>
<code>1234</code>
</data>
</scheme>
</body>
</return>