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?