Si está trabajando en Javascript, es mucho más fácil para nosotros JSON. Esto se debe a que JSON se puede evaluar directamente en un objeto Javascript, que es mucho más fácil de trabajar que el DOM.
endeudamiento y alterando ligeramente el XML y JSON desde arriba
XML:
<person>
<name>John Doe</name>
<tag>friend</tag>
<tag>male</tag>
</person>
JSON:
{ person: {"name": "John Doe", "tag": ["friend", "male"]} }
Si quería conseguir el segundo objeto de la etiqueta con XML, que había necesidad de utilizar las potentes pero detallados API DOM:
var tag2=xmlObj.getElementsByTagName("person")[0].getElementsByTagName("tag")[1];
Mientras que con un objeto Javascript que entró a través de JSON, simplemente podría utilizar:
var tag2=jsonObj.person.tag[1];
Por supuesto, jQuery hace que el ejemplo DOM mucho más simple:
var tag2=$("person tag",xmlObj).get(1);
Sin embargo, sólo JSON "encaja" en un mundo Javascript. Si trabajas con él por un tiempo, descubrirás que tienes mucha menos carga mental que involucrar datos basados en XML.
Todos los ejemplos anteriores ignoran la posibilidad de que uno o más nodos estén disponibles, estén duplicados o la posibilidad de que el nodo tenga solo uno o ninguno. Sin embargo, para ilustrar el nativo-dad de JSON, para hacer esto con la jsonObj, usted sólo tiene que:
var tag2=(jsonObj.person && jsonObj.person.tags && jsonObj.person.tags.sort && jsonObj.person.tags.length==2 ? jsonObj.person.tags[1] : null);
(algunas personas no les guste ese largo del ternario, pero funciona). Pero XML sería (en mi opinión) más desagradable (no creo que te interese el enfoque ternario porque seguirías llamando a los métodos dom que pueden tener que volver a hacer el trabajo según la implementación):
var tag2=null;
var persons=xmlObj.getElementsByTagName("person");
if(persons.length==1) {
var tags=persons[0].getElementsByTagName("tag");
if(tags.length==2) { tag2=tags[1]; }
}
Jquery (no probado):
var tag2=$("person:only-child tag:nth-child(1)",xmlObj).get(0);
oí que iban a cambiar el nombre de XML para OEML (Over Engineered Markup Language) –
¿Cómo maneja JSON diferentes codificaciones de caracteres (como lo hace XML). ¿Hay una codificación de caracteres implícita en una representación JSON? –
Permitir que los datos sean extraídos de otro dominio no es realmente una característica inherente a los formatos XML o JSON * *. Es algo relacionado con el navegador. –