Hola!
Hasta ahorita sigo igual, con la misma pregunta anterior: ¿Cómo puedo validar un XML?
Resulta que tengo un XML que tiene la siguiente estructura:
<noticias>
<noticia>
<id>
<titulo>
<texto>
<textoid></textoid>
</texto>
<foto>
<fotoid></fotoid>
</foto>
</noticia>
</noticias>
lo que quiero hacer es validar que no falte ningun nodo hijo en cada nodo <noticia> porque a partir de este XML necesito crear otro XML solo con aquellos nodos <noticia> que son validos, es decir... con aquellos nodos <noticia> a los que no les falta ningun nodo hijo.
Pero además necesito saber cual nodo <noticia> no es valido, para guardar el error en una BD y decir: el nodo <noticia> con index = x no es valido porque le falta x nodo.
No se si me expliqué???
Lo que yo hice es lo siguiente:
Cargo el XML:
Código:
string pathAG = "C:\\XML\\AG.xml";
XmlDocument xmlAG = new XmlDocument();
xmlAG.Load(pathAG);
Hago un GetElementsByTagName por cada nodo que necesito:
Código:
XmlNodeList xmlNoticia = xmlAG.GetElementsByTagName("noticia");
XmlNodeList xml_AG_noticiaid = xmlAG.GetElementsByTagName("id");
XmlNodeList xml_AG_titulo = xmlAG.GetElementsByTagName("titulo");
XmlNodeList xml_AG_textoid = xmlAG.GetElementsByTagName("textoid");
XmlNodeList xml_AG_fotoid = xmlAG.GetElementsByTagName("fotoid");
Hago un for para recorrer cada nodo <noticia>:
Código:
for(int i=0;i<xmlNoticia.Count;i++)
{
string AG_NoticiaId = xml_AG_noticiaid[i].FirstChild.Value;
string AG_titulo = xml_AG_titulo[i].FirstChild.Value;
string AG_textoid = xml_AG_textoid[i].FirstChild.Value;
string AG_fotoid = xml_AG_fotoid[i].FirstChild.Value;
}
Lo que pasa es que cuando no encuentra por ejemplo, el nodo textoid, me manda al catch y en el message: "Object reference not set to an instance of an object". Lo malo es que después se sale y ya no regresa a validar los demás nodos.
Por favor... si alguien me puede ayudar se los agradezco muchisimo!
Saludos