Estoy generando un xml con php para leerlo con javascript en el navegador.
Todo funciona de maravilla, si el xml no contiene caracteres acentuado o eñes como en el siguiente ejemplo:
Código:
Pero al momento de que tenga un caracter acentuado, me salia un error de que la entidad estaba indefinida. Según estuve investigando, era por que solo hay como 5 entidades válidas en XML, por tanto una é (é) no me la aceptaba.<root>
<Registro>
<Nombre>Id</Nombre>
<Descripcion>No</Descripcion>
<Id>1</Id>
</Registro>
</root>
Entonces lo que hice fue declarar todas las entidades que necesitaba en una sección DOCTYPE
:
Código:
Por lo que entiendo, esto lo que hace es sustituir las entidades html por sus respectivos codigos unicode.<!DOCTYPE root [
<!ENTITY aacute "á">
<!ENTITY eacute "é">
<!ENTITY iacute "í">
<!ENTITY oacute "ó">
<!ENTITY uacute "ú">
<!ENTITY Aacute "Á">
<!ENTITY Eacute "É">
<!ENTITY Iacute "Í">
<!ENTITY Oacute "Ó">
<!ENTITY Uacute "Ú">
<!ENTITY ntilde "ñ">
<!ENTITY Ntilde "Ú">
]><root>
<Registro>
<Nombre>Id</Nombre>
<Descripcion>No</Descripcion>
<Id>1</Id>
</Registro>
<Registro>
<Nombre>FechaDeEmision</Nombre>
<Descripcion>Fecha De Emisión</Descripcion>
<Id>5</Id>
</Registro>
<root>
Eso me arreglo el problema, pero ahora cuando hay un valor terminado en tilde, por ejemplo aqui que deberia salio Fecha De Emisió:
Código:
deja de leer el xml, usando try catch, me sale el sicuiente error: <Registro>
<Nombre>FechaDeEmision</Nombre>
<Descripcion>Fecha De Emisió</Descripcion>
<Id>5</Id>
</Registro>
Código:
Es decir, como la tag <Descripcion> contiene una cadena que termina con el caracter é, por alguna razón hace que la siguiente etiqueta, <Id>, no se pueda leer. Sin embargo la etiqueta tiene valor, que es el 5.
TypeError: reg.getElementsByTagName('Id')[0].firstChild has no properties
Alguna idea?

