El API JAXP

Lo siguiente que haremos es personalizar un poco el analizador, podemos ver c�mo obtener informaci�n que normalmente ignorar�a. Pero antes de poder hacer esto, tenemos que aprender unos pocos conceptos importantes de XML. En esta secci�n aprenderemos sobre.

  • Manejar caracteres especiales ("<", "&", etc.)

  • Manejar texto con s�ntaxix al estilo XML.

.�Manejar Caracteres Especiales

En XML, una entidad es una estructura XML (o de texto plano) que tiene un nombre. Referenciar la entidad por su nombre hace que �sta sea insertada dentro del documento en la posici�n de la referencia de entidad. Para crear una referencia de entidad, el nombre de la entidad se rodea de un ampersand y un punto y coma.

&entityName;

M�s adelante, cuando aprendamos c�mo escribir un DTD, veremos que podemos definir nuestras propias entidades, para que &yourEntityName; expanda todo el texto que hemos definido para esa entidad. Por ahora, nos enfocaremos en las entidades predefinidas y las referencias de caracteres que no requieren ninguna definici�n especial.

.�Entidades Predefinidas

Una referencia de entidad como &amp; contiene un nombre (en este caso amp) entre los delimitadores de inicio y final. El texto al que se refiere (&) es sustituido por el nombre, como una macro en un programa C o C++. La siguiente tabla mustra las entidades predefinidas para caracteres especiales.

Caracter Referencia
& &amp;
< &lt;
> &gt;
" &quot;
' &apos;

.� Referencias de Caracteres

Una referencia de caracter como &#147; contiene una almohadilla (#) seguida por un n�mero. El n�mero es el valor Unicode para un caracter como 65 para la letra �A�, 147 para la comilla izquierda o 148 para la comilla derecha. En este caso, el nombre de la entidad es la almohadilla seguida por los d�gitos que identifican el caracter.

.�Usar un Referencia de Entidad en un Documento XML

Supongamos que queremos insertar una l�nea como est� en nuestro documento XML.

	Market Size < predicted

El problema es que al poner esto directamente en un fichero XML el analziador ve un �ngulo izquierdo (<), y empieza a buscar un nombre de etiqueta, lo que desactiva el analizador. Para evitar este problema, ponemos &lt; en el fichero, en lugar de "<".

Nota:

Los resultados de las siguientes modificaciones est�n contenidos en slideSample03.xml. El resultado del procesamiento se puede ver en Echo07-03.log.

A�adimos el texto en negrita de abajo a nuestro fichero slideSample.xml:

    <!-- OVERVIEW -->
    <slide type="all">
      <title>Overview</title>
      ...
    </slide>

    <slide type="exec">
      <title>Financial Forecast</title>
      <itdestacar>Market Size &lt; predicted</itdestacar>
      <itdestacar>Anticipated Penetration</itdestacar>
      <itdestacar>Expected Revenues</itdestacar>
      <itdestacar>Profit Margin </itdestacar>
    </slide>

</slideshow>

Cuando ejecutemos el programa Echo sobre nuestro fichero XML, veremos la siguiente salida:

ELEMENT: <itdestacar>
CHARS:   Market Size 
CHARS:   <
CHARS:    predicted
END_ELM: </itdestacar>

El analizador convierte la referencia en la entidad que representa, y pasa la entidad a la aplicaci�n.

.�Manejar Texto con S�ntaxis al Estilo XML

Cuando manejamos grandes bloques de XML o HTML que incluyen muchos caracteres especiales, podr�a ser inconveniente reemplazarlos con la entidad de referencia apropiada. Para estas situaciones, podemos usar una secci�n CDATA

Nota:

Los resultados de la siguientes modificaciones est�n en el fichero slideSample04.xml. El resultado del procesamiento lo puedes ver en Echo07-04.log.

Una secci�n CDATA trabaja como <pre>...</pre> en HTML, -- todos los espacios en blanco en una secci�n CDATA son significantes, y los caracteres no son interpretados como XML. Una secci�n CDATA empieza con <![CDATA[ y termina con ]]>. A�adimos el texto en negrita de abajo a nuestro fichero slideSample.XML para definir una secci�n CDATA para una diapositiva ficticiamente t�cnica.

     ...
    <slide type="tech">
      <title>How it Works</title>
      <itdestacar>First we fozzle the frobmorten</itdestacar>
      <itdestacar>Then we framboze the staten</itdestacar>
      <itdestacar>Finally, we frenzle the fuznaten</itdestacar>
      <itdestacar><![CDATA[Diagram.                         
           frobmorten <------------ fuznaten
               |            <3>        ^
               | <1>                   |   <1> = fozzle
               V                       |   <2> = framboze    
             staten--------------------+   <3> = frenzle
                            <2>
      ]]></itdestacar>
    </slide>
</slideshow>

Cuando ejecutemos el programa Echo sobre el nuevo fichero, veremos la siguiente salida:

  ELEMENT: <itdestacar>
  CHARS:   Diagram.          
 frobmorten <------------ fuznaten
     |            <3>        ^
     | <1>                   |   <1> = fozzle
     V                       |   <2> = framboze    
   staten--------------------+   <3> = frenzle
                  <2>
      
 END_ELM: </itdestacar>

Podemos ver aqu� que el texto de la secci�n CDATA ha llegado como un string de caracteres completamente sin interpretar.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR

SIGUIENTE ARTÍCULO