Altova Authentic 2024 Browser Edition

XMLData ofrece acceso a los elementos del archivo XML que está visible. Permite realizar todas las modificaciones necesarias a los elementos de la estructura XML. La principal función de XMLData es:

 

1.Acceder a los nombres y los valores de todo tipo de elementos (p. ej. elementos, atributos...).

 

2.Crear elementos nuevos de todo tipo.

 

3.Insertar y anexar elementos nuevos.

 

4.Borrar elementos secundarios ya existentes.

 

Si ya conoce la interfaz XMLData porque la usó en la API de XMLSpy, debe tener en cuenta algunos aspectos cuando se creen e inserten elementos nuevos en el archivo XML o cuando se cambie el nombre de los elementos ya existentes. Para más información siga leyendo este apartado.

 

Estructura de XMLData

Para poder usar la interfaz XMLData, antes es necesario conocer cómo se crean asignaciones de datos entre el archivo XML y la estructura XMLData. También es muy importante saber que XMLData no tiene una rama separada de objetos para los atributos. Los atributos de un elemento también son sus secundarios. Un elemento puede tener otros tipos de secundarios (como elementos secundarios contenido de texto). La propiedad XMLData.Kind le ofrece la oportunidad de diferenciar entre tipos de secundarios distintos del mismo elemento. Puede ver un ejemplo a continuación:

 

Ejemplo

 

Este código XML,

 

 <ElementoPrimario>

          <PrimerSecundario atr1="Rojo" atr2="Negro">

                    Este es el valor de PrimerSecundario

          </PrimerSecundario>

          <SegundoSecundario>

                  <!--Comentario-->

                  </SecundarioProfundo>

          </SegundoSecundario>

  Este es el texto

 </ElementoPrimario>

 

se asigna a esta estructura de objetos de XMLData:

 

 api_XMLData

 

El primario de todos los elementos XML que hay dentro de un archivo es la propiedad Authentic.XMLRoot. Use este objeto XMLData para obtener referencias a los demás elementos XML de la estructura.

 

Nombre y valor de los elementos

Para conocer y modificar el nombre y el valor de todo tipo de elementos XML use las propiedades XMLData.Name y XMLData.TextValue. Es posible que varios tipos de objetos de XMLData y elementos vacíos no tengan asociado ningún valor de texto. No se recomienda cambiar el nombre de un elemento XML ya existente en la vista Authentic. El nombre tiene una gran relevancia en la forma en que la vista Authentic presenta el contenido del elemento. Consulte la documentación de Altova StyleVision para obtener más información.

 

Creación e inserción de objetos XMLData nuevos

Cree el objeto XMLData nuevo (como un elemento, atributo o nodo de texto):

 

1.Use el método Authentic.CreateChild para crear el objeto XMLData nuevo. Defina el nombre y el valor del objeto nuevo antes de insertarlo (ver punto 3 más abajo).

 

2.Inserte el objeto XMLData nuevo en la ubicación correcta haciendo referencia a su primario: (i) si el secundario nuevo debe ser el último secundario del primario, utilice el método XMLData.AppendChild para insertar el objeto XMLData, (ii) para insertar el secundario nuevo en otra posición de la secuencia de objetos secundarios, entonces use el método XMLData.GetFirstChild o el método XMLData.GetNextChild para localizar al secundario antes del cual debe insertarse el secundario nuevo; ahora inserte el secundario nuevo con XMLData.InsertChild. El secundario nuevo se inserta inmediatamente antes del secundario actual.

 

Nota:en vista Authentic se puede crear un elemento nuevo junto con su subestructura porque la estructura del elemento se define en el esquema XML. Sin embargo, es en la configuración del nodo del SPS donde se define si la se crea o no la subestructura. Consulte la documentación de StyleVision para más información.

 

En el ejemplo siguiente se añade un tercer secundario entre el elemento <PrimerSecundario> y el <SegundoSecundario>:

 

 Dim objParent

 Dim objChild

 Dim objNewChild

 

 Set objNewChild = objPlugIn.CreateChild(spyXMLDataElement)

 objNewChild.Name = "OneAndAHalf"

 

 'objParent is set to <ElementoPrimario>

 'GetFirstChild(-1) gets all children of the parent element

 'and move to <SegundoSecundario>

 Set objChild = objParent.GetFirstChild(-1)

 Set objChild = objParent.GetNextChild

 

 objParent.InsertChild objNewChild

 Set objNewChild = Nothing

 

Los nodos secundarios de un elemento se deben insertar en determinado orden. Inserte primero los atributos del elemento y después los elementos secundarios del mismo. El contenido de texto de un elemento se debe añadir como nodo secundario de tipo texto; para crearlo puede usar Authentic.CreateChild con el valor de parámetro 6. Para establecer el contenido de texto de un elemento debe introducirlo como el valor de texto del nodo secundario.

 

Copiar objetos XMLData ya existentes

Si quiere mover objetos XMLData a otra posición del mismo archivo, no puede usar los métodos XMLData.InsertChild y XMLData.AppendChild. Estos métodos solo sirven para objetos XMLData nuevos.

 

En cambio, debe copiar la jerarquía de objetos a mano. Por ejemplo, podría usar esta función escrita en JavaScript para copiar XMLData recursivamente:

 

 // esta función devuelve una copia completa del objeto XMLData

 function GetCopy(objXMLData)

 {

         var objNew;

         objNew = objPlugIn.CreateChild(objXMLData.Kind);

 

         objNew.Name = objXMLData.Name;

         objNew.TextValue = objXMLData.TextValue;

 

         if(objXMLData.HasChildren)        {

                 var objChild;

                 objChild = objXMLData.GetFirstChild(-1);

         

                 while(objChild)        {

                         try {

                                 objNew.AppendChild(GetCopy(objChild));

                                 objChild = objXMLData.GetNextChild();

                         }

                         catch(e) {

                                 objChild = null;

                         }

                 }

         }

 

         return objNew;

 }

 

 

Eliminar objetos XMLData

XMLData ofrece dos métodos para la eliminación de objetos secundarios: XMLData.EraseAllChildren y XMLData.EraseCurrentChild.

 

Para eliminar objetos XMLData primero debe tener acceso al primario de los elementos que desea eliminar. Para obtener una referencia al objeto XMLData primario utilice XMLData.GetFirstChild y XMLData.GetNextChild.

 

Para ver un ejemplo de cómo eliminar elementos XML, consulte la descripción de los métodos XMLData.EraseAllChildren y XMLData.EraseCurrentChild.

 

© 2018-2024 Altova GmbH