Tengo un cliente que envía un feed xml que analizo utilizando el siguiente código. Este código funciona¿Cómo ignorar un específico con una cláusula LINQ where?
reviews = from item in xmlDoc.Descendants("node")
select new ForewordReview()
{
PubDate = (string)item.Element("created"),
Isbn = (string)item.Element("isbn"),
Summary = (string)item.Element("review")
};
Después de obtener todas mis "reseñas", echo el IEnumerable como una lista y lo devuelvo. Originalmente, estaba teniendo un momento bueno y fácil de analizar su XML que solía tener este aspecto:
<reviews>
<node>
<created>01-01-1900</created>
<ISBN>12345657890123</ISBN>
<Review>This is a nice and silly book</Review>
</node>
<node>
<created>01-01-2011</created>
<ISBN>1236245234554</ISBN>
<Review>This is a stupid book</Review>
</node>
<node>
<created>12-06-1942</created>
<ISBN>1234543234577</ISBN>
<Review>This is a old, naughty book</Review>
</node>
</reviews>
Han, sin embargo, cambió su esquema, a la que no tengo acceso, y ahora su XML es agregando una etiqueta final <node>
al final que no contiene los elementos de fallecido que estoy buscando, y entonces, mi análisis se rompe en esta última etiqueta y arrojo una excepción. Aquí está un ejemplo:
<reviews>
<node>
<created>01-01-1900</created>
<ISBN>12345657890123</ISBN>
<Review>This is a nice and silly book</Review>
</node>
<node>
<created>01-01-2011</created>
<ISBN>1236245234554</ISBN>
<Review>This is a stupid book</Review>
</node>
<node>
<created>12-06-1942</created>
<ISBN>1234543234577</ISBN>
<Review>This is a old, naughty book</Review>
</node>
<node>
<count>4656</count>
</node>
</reviews>
Necesito saber si hay una manera de hacer caso omiso de esta etiqueta final (su siempre al final del documento) a pesar de que tiene el mismo nombre que los demás "nodo" etiquetas que estoy buscando. Tengo una captura de prueba alrededor de este bloque de código pero no devuelve la lista de buenas críticas si ve este error.
Gracias chicos.
quizás agregue un 'where item.Element (" count ") == null' _ (o de otra manera round" created "!? = Null) _ – ordag
@ordag De hecho, incorporé el suyo en mi solución junto con algunas comprobaciones nulas de la sugerencia delltrees. Gracias. –