ho un documento XML come questo:Rimuovere vuoti/spazi vuoti elementi in collezione di nodi XML
<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>
Sto cercando di iterare ogni nodo e procedere come segue:
- Buttare via ogni elementi che sono vuoti/vuoti.
- Genera nuovo nodo con solo elementi contenenti valori.
- Inviare il documento risultante a un altro servizio Web.
La parte che sto cercando è come iterare attraverso ogni nodo e controllare ogni elemento per valori nulli.
Ho testato questo codice fuori a http://rextester.com/runcode, ma non riesco a capirlo:
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++;
}
Sulla base del input XML di cui sopra, spero di ottenere il seguente risultato:
<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>
Non sono sicuro se sto utilizzando i giusti metodi per iterare su nodi ed elementi.
Cosa intendi per "elementi NULL"? Nota anche che stai usando le espressioni di query senza scopo qui - per esempio, invece di scrivere 'da el in node select el' puoi semplicemente usare' node' dopo ... –
@JonSkeet - Intendo solo elementi che sono vuoti /vuoto. Non è lo stesso di NULL? – jared
Non proprio: non esiste un concetto come "NULL" in XML. Inoltre, non è chiaro quale struttura si prevede di restituire. Sarebbe utile se tu potessi modificare la tua domanda con l'output desiderato per il dato file di input. –