Entfernen Sie leere / leere Elemente in der Auflistung von XML-Knoten

Ich habe ein XML-Dokument wie dieses:

<magento_api>
    <data_item>
        <code>400</code>
        <message>Attribute weight is not applicable for product type Configurable Product</message>
    </data_item>
    <data_item>
        <code>400</code>
        <message>Resource data pre-validation error.</message>
    </data_item>
    <data_item>
        <code>1</code>
        <message></message>
    </data_item>
    <data_item>
        <code></code>
        <message>No code was given</message>
    </data_item>
</magento_api>

Ich versuche, jeden Knoten zu iterieren und wie folgt vorzugehen:

Werfen Sie alle Elemente aus, die leer / leer sind.Generieren Sie einen neuen Knoten nur mit Elementen, die Werte enthalten.Senden Sie das resultierende Dokument an einen anderen Webdienst.

Der Teil, mit dem ich zu kämpfen habe, ist, wie man durch jeden Knoten iteriert und jedes Element auf Nullwerte überprüft.

Ich habe diesen Code unter getestethttp://rextester.com/runcode aber ich kann es nicht herausfinden:

Console.WriteLine("Querying tree loaded with XElement.Load");
Console.WriteLine("----");
XElement doc = XElement.Parse(@"<magento_api>
          <data_item>
            <code>400</code>
            <message>Attribute weight is not applicable for product type Configurable Product</message>
          </data_item>
          <data_item>
            <code>400</code>
            <message>Resource data pre-validation error.</message>
          </data_item>
          <data_item>
            <code>1</code>
            <message></message>
          </data_item>
          <data_item>
            <code></code>
            <message>No code was given</message>
          </data_item>
    </magento_api>");

int counter = 1;
IEnumerable<XNode> nodes =
    from nd in doc.Nodes()
    select nd;
foreach (XNode node in nodes)
{
    Console.WriteLine(counter + "-" + node);
    IEnumerable<XElement> elements =
    from el in node //this is where I've been trying various methods, but no dice.
    select el;
    foreach (XElement e in elements)
    {
           Console.WriteLine(counter + "-" + e.Name + "-" + e.Value + "\r\n");
    }
    counter++;
}

Aufgrund der obigen XML-Eingabe erhoffe ich mir folgende Ausgabe:

<magento_api>
    <data_item>
        <code>400</code>
        <message>Attribute weight is not applicable for product type Configurable Product</message>
    </data_item>
    <data_item>
        <code>400</code>
        <message>Resource data pre-validation error.</message>
    </data_item>
    <data_item>
        <code>1</code>
    </data_item>
    <data_item>
        <message>No code was given</message>
    </data_item>
</magento_api>

Ich bin nicht sicher, ob ich die richtigen Methoden verwende, um die Knoten und Elemente zu durchlaufen.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage