Altova MapForce 2023 Enterprise Edition

En este ejemplo aprenderá cómo reemplazar valores de elementos específicos en un archivo XML con ayuda de componentes de asignación de valores (es decir, usando una tabla de consulta predefinida).

 

Puede encontrar el archivo XML necesario para este ejemplo en <Documentos>\Altova\MapForce2023\MapForceExamples\Tutorial\MFCompany.xml. Además de otros datos, este archivo almacena información sobre los empleados de la empresa y sus puestos de trabajo, por ejemplo:

 

<Person>
  <First>Michelle</First>
  <Last>Butler</Last>
  <Title>Software Engineer</Title>
</Person>
<Person>
  <First>Lui</First>
  <Last>King</Last>
  <Title>Support Engineer</Title>
</Person>

<Person>
  <First>Steve</First>
  <Last>Meier</Last>
  <Title>Office Manager</Title>
</Person>

 

Imagine que necesita reemplazar algunos de esos puestos de trabajo en el archivo XML que hemos mencionado más arriba. En concreto, debe reemplazar "Software Engineer" (Ingeniero de software) por "Code Magician" (Mago del código). También el título "Support Engineer" (Ingeniero de soporte) se debe sustituir por "Support Magician" (Mago del soporte). El resto de puestos de trabajo permanece sin cambios.

 

Para conseguir este objetivo debe añadir el archivo XML al área de asignación: haga clic en el botón de la barra de herramientas Insertar archivo o esquema XML ic-new-schema o ejecutando el comando de menú Insertar archivo o esquema XML. A continuación, copie y pegue el componente XML en la asignación y cree las conexiones como se muestra en la imagen siguiente. Puede que primero necesite desactivar la opción Conectar automáticamente los secundarios equivalentes ic-conn-child para evitar que se creen automáticamente conexiones innecesarias.

mf_lookup_06

La asignación que ha creado hasta ahora solamente copia los elementos Person en el archivo XML de destino sin hacer ningún cambio el los elementos First, Last o Title.

 

Para reemplazar los puestos de trabajo en cuestión debe añadir un componente de asignación de valores. Haga clic con el botón derecho en la conexión entre los dos elementos Title y seleccione Insertar asignación de valores en el menú contextual. Defina las propiedades de la asignación de valores como en la imagen:

mf_lookup_07

Según la configuración anterior, cada ocurrencia de "Software Engineer" se reemplaza con "Code Magician" y cada ocurrencia de "Support Engineer" se reemplaza con "Support Magician". Tenga en cuenta que no se ha definido la condición Si no existe, entonces, por lo que la asignación de valores devuelve un nodo vacío si el puesto de trabajo es distinto a "Software Engineer" o "Support Engineer". En consecuencia, si hace clic en la pestaña Resultados y accede a la vista previa de la asignación, en algunos de los elementos Person faltará el elemento Title, por ejemplo:

 

<Person>
  <First>Vernon</First>
  <Last>Callaby</Last>
</Person>
<Person>
  <First>Frank</First>
  <Last>Further</Last>
</Person>

<Person>
  <First>Michelle</First>
  <Last>Butler</Last>

  <Title>Code Magician</Title>
</Person>

 

Como acabamos de explicar, si hay nodos vacíos en el resultado generado faltan algunas entradas; por tanto, en el fragmento XML anterior solamente se reemplazó el puesto de Michelle Butler, ya que este estaba en la tabla de consulta. La configuración que ha creado hasta ahora no se ajusta al objetivo inicial. Los ajustes correctos serían:

mf_lookup_09

Con la configuración de la imagen anterior ocurre lo siguiente al ejecutar la asignación:

 

Cada ocurrencia de "Software Engineer" se reemplaza con "Code Magician"

Cada ocurrencia de "Support Engineer" se reemplaza con "Support Magician"

Si el puesto original no se encuentra en la tabla de consulta, la asignación de valores lo devolverá sin cambios.

 

Solo a efectos ilustrativos podemos cambiar también los puestos de trabajo que no sean "Software Engineer" o "Support Engineer" por un valor personalizado, por ejemplo "n/a". Para ello debe definir las propiedades de la asignación de valores como en la imagen siguiente:

mf_lookup_08

Si ahora accede a una vista previa de la asignación, en el resultado aparecen todos los puestos de trabajo, pero aquellos que no coincidan con los dos que se han definido aparecen con el valor "n/a", por ejemplo:

 

<Person>
  <First>Vernon</First>
  <Last>Callaby</Last>
  <Title>N/A</Title>
</Person>
<Person>
  <First>Frank</First>
  <Last>Further</Last>
  <Title>N/A</Title>
</Person>
<Person>
  <First>Michelle</First>
  <Last>Butler</Last>
  <Title>Code Magician</Title>
</Person>

 

Aquí termina este ejemplo de asignación de valores. Puede usar este proceso lógico para conseguir el resultado deseado también en otras asignaciones.

© 2017-2023 Altova GmbH