![]() |
Leer nodo de un xml
1 Archivos Adjunto(s)
Hola amigos del foro, realmente no sabía dónde ubicar la pregunta.
Tengo el xml de una factura electrónica y necesito poder leer y modificar un dato. <AdditionalInformation> <Name>CODIGO_PRESTADOR</Name> <Value>1</Value> </AdditionalInformation> del xml modificar <Value>1</Value> siempre y cuando encuentre <Name>CODIGO_PRESTADOR</Name> Adjunto les dejo el archivo. Les agradezco toda la ayuda que me puedan brindar Gracias |
En los foros puedes encontrar mucha información al respecto.
Busca sobre la clase TXMLDocument. En la case TXMLDocument, tienes métodos de LoadFromFile y SaveToFile. Puedes cargar el fichero XML. Navegar por los nodos (ChildNodes,...) modificar los valores y volverlo a guardar. Revisa estos hilos, aunque si buscas encontrarás más: https://www.clubdelphi.com/foros/showthread.php?t=37223 https://www.clubdelphi.com/foros/showthread.php?t=89834 https://www.clubdelphi.com/foros/showthread.php?t=96144 |
Recientemente hice esta función que recorre un XML y obtengo el valor que tiene en los nodos que tienen un nombre especifico. Puede ser un punto de partida.
Teniendo en cuenta que el XML es un texto (String) tambien se pueden hacer reemplazos de texto usando comodines.
Saludos, |
Hola buenos días desde Colombia, gracias por sus respuestas. efectivamente he visto ejemplos sobre TXMLDocument. que funcionan perfectamente en otros XML, pero para el caso específico del esquema de la factura que les adjunté no funcionan; por ello lo envié
Gracias por el tiempo dedicado |
No me había dado cuenta de que el nodo que has puesto al inicio no está dentro del XML directamente.
Código:
<AdditionalInformation> Código:
... El problema es que un elemento CDATA, según su definición: "En XML, una sección CDATA (Character Data) es utilizada para incluir contenido que contiene caracteres especiales sin que se interpreten como marcado XML por el analizador. " Es decir, que el analizador, de por si, no va a evaluar ese XML que está dentro del CDATA. Seguramente (no lo he probado), cuando llegues al elemento CDATA, deberás coger ese texto, crear un nuevo TXMLDocument, meter el texto dentro y "parsearlo" de nuevo. Y ahora sí, si "parseas" ese segundo XML sí te encontrará el elemento: <Name>CODIGO_PRESTADOR</Name> |
No me había dado cuenta de que el nodo que has puesto al inicio no está dentro del XML directamente.
Código:
<AdditionalInformation> Código:
... El problema es que un elemento CDATA, según su definición: "En XML, una sección CDATA (Character Data) es utilizada para incluir contenido que contiene caracteres especiales sin que se interpreten como marcado XML por el analizador. " Es decir, que el analizador, de por si, no va a evaluar ese XML que está dentro del CDATA. Seguramente (no lo he probado), cuando llegues al elemento CDATA, deberás coger ese texto, crear un nuevo TXMLDocument, meter el texto dentro y "parsearlo" de nuevo. Y ahora sí, si "parseas" ese segundo XML sí te encontrará el elemento: <Name>CODIGO_PRESTADOR</Name> |
La franja horaria es GMT +2. Ahora son las 21:36:49. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi