Que tal, tengo un problema con las tildes y las eñes.
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:
<root>
<Registro>
<Nombre>Id</Nombre>
<Descripcion>No</Descripcion>
<Id>1</Id>
</Registro>
</root>
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.
Entonces lo que hice fue declarar todas las entidades que necesitaba en una sección DOCTYPE
:
Código:
<!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>
Por lo que entiendo, esto lo que hace es sustituir las entidades html por sus respectivos codigos unicode.
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:
<Registro>
<Nombre>FechaDeEmision</Nombre>
<Descripcion>Fecha De Emisió</Descripcion>
<Id>5</Id>
</Registro>
deja de leer el xml, usando try catch, me sale el sicuiente error:
Código:
TypeError: reg.getElementsByTagName('Id')[0].firstChild has no properties
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.
Alguna idea?