![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Leer nodo de un xml
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 |
#2
|
||||
|
||||
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
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#3
|
||||
|
||||
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, |
#4
|
||||
|
||||
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 |
#5
|
||||
|
||||
No me había dado cuenta de que el nodo que has puesto al inicio no está dentro del XML directamente.
Código:
<AdditionalInformation> <Name>CODIGO_PRESTADOR</Name> <Value>1</Value> </AdditionalInformation> Código:
... <cbc:Description><![CDATA[<?xml version="1.0" encoding="UTF-8"?> <Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:... ... <Name>CODIGO_PRESTADOR</Name> ... ... ![]() 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>
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#6
|
||||
|
||||
No me había dado cuenta de que el nodo que has puesto al inicio no está dentro del XML directamente.
Código:
<AdditionalInformation> <Name>CODIGO_PRESTADOR</Name> <Value>1</Value> </AdditionalInformation> Código:
... <cbc:Description><![CDATA[<?xml version="1.0" encoding="UTF-8"?> <Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns: ... 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>
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Leer Xml con TXMLDocument (delphi 11) no avanza de nodo | IVAND | Varios | 5 | 09-03-2023 03:12:31 |
leer nodo tfd de un cfdi xml | jourdan | Varios | 18 | 28-08-2018 22:04:12 |
Como leer nodo de archivo xml con Python usando minidom | jourdan | Python | 3 | 09-02-2018 21:23:16 |
C++Builder 6 CFDI Mexico ¿Como agregar nodo dentro de otro nodo como hijo? | JXJ | C++ Builder | 0 | 10-03-2016 03:51:01 |
Consulta - TP Arboles- "Para cada nodo de un arbol Indique nombre del nodo padre" | velapuerca88 | Varios | 5 | 08-06-2012 17:35:33 |
![]() |
|