LOCAL StringXML,StringXML2
***********************************************
* Aquí se crea un documento básico en XML que contiene
* tres datos personales y un TAG vacío para las direcciones
***********************************************
StringXML=[]
StringXML = CreateDocumentXML(StringXML,"nombre","Aleix")
StringXML = CreateDocumentXML(StringXML,"apellidos","Lamela")
StringXML = CreateDocumentXML(StringXML,"dni","12345678A")
StringXML = CreateDocumentXML(StringXML,"detallesDirecciones")
***********************************************
* Ahora crearemos las direcciones de la misma manera
***********************************************
StringXML2=[]
StringXML2 = CreateDocumentXML(StringXML2,"Calle","Diagonal")
StringXML2 = CreateDocumentXML(StringXML2,"Piso","4")
StringXML2 = CreateDocumentXML(StringXML2,"Puerta","1")
***********************************************
* Aqui vamos a agregar Documento XML a otro donde nos interese.
***********************************************
LOCAL PadreXML as msxml2.DOMDocument
LOCAL HijosXML as msxml2.DOMDocument
LOCAL ELEMENTOS AS MSXML2.IXMLDOMElement
PadreXML = CREATEOBJECT("msxml2.domdocument")
HijosXML = CREATEOBJECT("msxml2.domdocument")
HijosXML.async=.f.
PadreXML.async=.f.
HijosXML.loadXML(StringXML2)
PadreXML.loadXML(StringXML)
HijosXML.documentElement
PadreXML.documentElement.selectSingleNode("detallesDirecciones").appendChild(HijosXML.documentElement)
************************************************
* Y ya esta , ahora solo tienes que mirar el contenido
***********************************************
IF MESSAGEBOX("¿Desea guardar el contenido en disco?",32+4) = 6
PadreXML.save("c:DocumentoPersonal.xml")
ELSE
MESSAGEBOX(PadreXML.xml)
ENDIF
RETURN
***********************************************
* Esta función Acepta Tres Parámetros, un Documento Raíz
* , el Nuevo TAG que se le quiere agregar
* Y el Valor del Tag
***********************************************
FUNCTION CreateDocumentXML(DocumentRoot as String,;
NewElement as String, ;
NewValue as String)
LOCAL ElDocumento as MSXML2.DOMDocument
LOCAL ELElemento as MSXML2.IXMLDOMElement
LOCAL LaRaiz as MSXML2.IXMLDOMElement
IF PCOUNT() >= 1 THEN
***********************************************
* Cargo el Documento nuevo
***********************************************
ElDocumento = CREATEOBJECT("MSXML2.DOMDocument")
ElDocumento.async= .F.
ElDocumento.loadXML(DocumentRoot)
ENDIF
IF PCOUNT() >= 2 THEN
***********************************************
* Extraigo los datos principales
***********************************************
LaRaiz = ElDocumento.documentElement
***********************************************
* Creo el nuevo Elemento
***********************************************
ElElemento = ElDocumento.createElement(NewElement)
LaRaiz.appendChild(ElElemento)
ENDIF
IF PCOUNT()=3 THEN
LaRaiz.lastChild.text = NewValue
ENDIF
RETURN ElDocumento.xml
ENDFUNC
18 de septiembre de 2001
Crea documentos XML anidados con VFP 7.0
Suscribirse a:
Comentarios de la entrada
(
Atom
)
Estimado Luis Maria. podrias validar el funcionamiento en VFP9. Me sale un error en la linea
ResponderBorrarLaRaiz = ElDocumento.documentElement
Buenas a todos,
ResponderBorrarme sale el error:
"LaRaiz no es un objeto",
en la linea:
LaRaiz.appendChild(ElElemento)
agradecido por una pronta y positiva respuesta
AMedina