Delphi - Etiqueta padre XML

   
Vista:

Etiqueta padre XML

Publicado por nelem (1 intervención) el 01/10/2007 12:57:12
Buenos días, tengo otra duda sobre el tratamiento del fichero xml tengo que preguntar a la etiqueta actual cual es su padre e igular lo que me devuelva a un text y no hay manera escribo las instrucciones usadas pero no me funciona
if (Pos ('AUTOMATIC_INTERPRETATION', XmlNode.ParentNode.NodeName)>0) then showmessage(Encontrada); El error que da es "Element does not contain a single text node" .

Ante todo muchas gracias por la ayuda prestada.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Etiqueta padre XML

Publicado por emilio (175 intervenciones) el 01/10/2007 17:47:42
Resolvistes con el ejemplo de delphi???. Mira yo no le se mucho a el procesamiento de ficheros xml, pues todabia no he hecho nada con xml pero ya pronto estoy al caer en eso.
Creo que el nodo principal de xml es rootnode(no estoy seguro), preguntale el XmlDocument y no a un nodo en particular.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Etiqueta padre XML

Publicado por nelem (4 intervenciones) el 02/10/2007 07:41:55
Hola Emilio muchas gracias por todo si que lo resolvi esto lo voy a probar y ya te cuento, me has sido de gran ayuda, el ejemplo es genial, muy bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Etiqueta padre XML

Publicado por nelem (4 intervenciones) el 02/10/2007 08:08:30
Al fin no lo he hecho con lo que me dijiste sino con la siguiente instrucción por si a alguien le viniera bien lo pongo.
Siendo XmlNode una variable de tipo IXMLNode, la instruccion para ver su padre es la siguiente:
XmlNode.ParentNode.NodeName

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Otro problemilla con lo mismo

Publicado por nelem (4 intervenciones) el 02/10/2007 15:44:57
Hola vaya tarea esta de leer los XML me estoy rallando de una manera, tengo unas ganas de terminar y acabo de empezar como quien dice.

mi problema ahora es que solo quiero leer una parte se que cuando llega a la etiqueta TYPICAL_CYCLE_CHANNEL deje de llere el fichero yo lo estoy intentando hacer con un exit cuando lo lee pero no me hace caso.

procedure TForm1.ExtraeDatos(XmlNode: IXMLNode; depth: Integer);
var i: Integer;
Attr: IXMLNode;
begin
Edit1.Text := '';
edit2.Text := '';
Edit3.Text := '';
if XMLNode.NodeType = ntElement then
begin
if XmlNode.IsTextElement then
if XmlNode.NodeValue <> null then
Edit1.Text := XmlNode.NodeName + ' = ' + XmlNode.NodeValue
else
Edit1.Text := XmlNode.NodeName
else
if Pos ('AUTOMATIC_INTERPRETATION', XmlNode.NodeName) >0 then showmessage('ESTA');
if XmlNode.HasChildNodes then
Edit2.Text := XmlNode.NodeName;
for i:=0 to Pred(XmlNode.AttributeNodes.Count) do
begin
Attr := XmlNode.AttributeNodes[i];
if Attr.Text='' then Attr.NodeValue := ' ';
Edit2.Text := Attr.NodeName;
Edit3.Text := Attr.NodeValue ;
if (Attr.Text = 'Anormal') and (Pos ('AUTOMATIC_INTERPRETATION', XmlNode.ParentNode.NodeName)>0) then showmessage(' ESTA ANOR');
if (Pos ('TYPICAL_CYCLE_CHANNEL', XmlNode.NodeName)>0) then
begin
showmessage(XmlNode.NodeName);
Exit; //Aqui quiero que se deje de ejecutar la función pero no lo hace
end;
end;
if XmlNode.HasChildNodes then
for i:=0 to Pred(XmlNode.ChildNodes.Count) do
ExtraeDatos(XmlNode.ChildNodes[i], depth+1)
end;
end;

Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Otro problemilla con lo mismo

Publicado por emilio (175 intervenciones) el 03/10/2007 00:28:51
mmmmm... espero tener un poco mas de suerte cuando me toque esto del xml :) , mira yo no veo nada malo en tu codigo asi que solo puedo recomendarte algunas cosas:

1- Puitar la funcion Pred, generalmente se va hasta Coun o Count -1.
2 - Serciorate de que TYPICAL_CYCLE_CHANNEL se encuentra en la jerarquia del nodo, porque lo que debe suceder es que la funcion Pos no lo encuentra.
3- prueba utilizar While o Repeat.

Si por casualiad te parase en el ShowMessage pero no ejecutase el exit despues, pues prueba un tipo de mensage que tenga retorno como MessageDlg o MessageBox y pon el Exit en dependencia del resultado del mesage asi garantizas en poco mas su ejecucion.

NO SE QUE MAS DECIR.... AH SI... SUERTE!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar