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:
Hago un GetElementsByTagName por cada nodo que necesito:string pathAG = "C:\\XML\\AG.xml"; XmlDocument xmlAG = new XmlDocument(); xmlAG.Load(pathAG);
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:
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.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; }
Por favor... si alguien me puede ayudar se los agradezco muchisimo!
Saludos