Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/10/2006, 14:17
Emerald
 
Fecha de Ingreso: mayo-2006
Mensajes: 243
Antigüedad: 18 años, 10 meses
Puntos: 0
les cuento por que quiero validar un XML

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