У меня есть файл XML, который я хочу сопоставить по номерам с массивом чисел, которые не разрешены в файле XML. Если какой-либо из дочерних узлов содержит какие-либо числа в массиве, я хочу удалить родительский узел.
Массив:
int [] excluded = new int[] { 112659, 112800, 113201}
Мой XML файл выглядит следующим образом:
<?xml version="1.0" encoding="Windows-1252" standalone="yes"?>
<file>
<fakturor>
<kund>
<number>11354</number>
</kund>
<faktura>
<number>112657</number>
</faktura>
<sum_total_fakturor />
</fakturor>
<fakturor>
<kund>
<number>234</number>
</kund>
<faktura>
<number>112658</number>
</faktura>
<faktura>
<number>112659</number>
</faktura>
<faktura>
<number>112660</number>
</faktura>
<sum_total_fakturor />
</fakturor>
<fakturor>
<kund>
<number>24202</number>
</kund>
<faktura>
<number>112661</number>
</faktura>
<faktura>
<number>112662</number>
</faktura>
<sum_total_fakturor />
</fakturor>
</file>
В примере я хочу удалить родительский элемент "fakturor", где есть дочерняя фактура с номером = 112659.
Я работал над некоторым кодом C#, и это как насколько я пришел прямо сейчас.
var xmlDoc = XDocument.Load(file.FullName);
List<string> excluded = new List<string> { "112659", "112800", "113201" };
var allFakturor = xDoc.Descendants("fakturor");
foreach (var parentFaktura in allFakturor)
{
var hasChildToBeExcluded = parentFaktura.Elements("faktura").Where(t => excluded.Contains(t.Element("number").Value));
if (hasChildToBeExcluded.Count() > 0)
{
parentFaktura.Remove();
}
}
У кого-нибудь есть какие-нибудь яркие идеи? Я хотел бы иметь хороший лайнер. Приведенный выше код C# на самом деле не помогает.
Спасибо // R