node - javascript xml response
cómo mostrar xml en javascript? (7)
Como dice la pregunta, simplemente se me escapó la memoria de cómo mostrar xml en javascript, quiero mostrar un xml fuente dentro de un div en una página, que se encuentra junto al resultado procesado del xml en otro div.
No puedo recordar si hubo un equivalente al escape de JavaScript para convertir entidades en el cliente
Nota : los archivos xml se sirven tal como están del servidor, por lo que necesito una solución del lado del cliente
Nota : el problema principal es que XML no se procesa correctamente en la mayoría de los navegadores, todos los corchetes y atributos desaparecen, dejándote con texto que no se ve como xml
Aquí hay una función para ti:
<script type="text/javascript">
<!--
function xml_to_string(xml_node)
{
if (xml_node.xml)
return xml_node.xml;
else if (XMLSerializer)
{
var xml_serializer = new XMLSerializer();
return xml_serializer.serializeToString(xml_node);
}
else
{
alert("ERROR: Extremely old browser");
return "";
}
}
// display in alert box
alert(xml_to_string(my_xml));
// display in an XHTML element
document.getElementById("my-element").innerHTML = xml_to_string(my_xml);
-->
</script>
Cuando no quiere usar un framework completo de JavaScript solo para esto ...
function insertLiteral(literalString, targetElement)
{
var textNode = document.createTextNode(literalString);
targetElement.appendChild(textNode)
return textNode;
}
// test it (for the example, I assume #targetDiv is there but empty)
var xmlString = "<this><is_some><xml with=''attributes'' /></is_some></this>";
var targetElement = document.getElementById("targetDiv");
var xmlTextNode = insertLiteral(xmlString, targetElement);
#targetDiv
puede #targetDiv
con CSS:
#targetDiv {
font-family: fixed;
white-space: pre;
}
El problema es que debe escapar de los caracteres que el analizador HTML interpretará como marcado: <,>, &, y en algunos casos "y"
Core JavaScript no proporciona esto para usted, pero muchas de las bibliotecas de complementos sí lo ofrecen.
Por ejemplo, Prototype tiene: http://www.prototypejs.org/api/string/escapeHTML
Obtenga su XML usando Ajax y simplemente coloque el resultado en un área de textarea
. Dale un estilo al cuadro de texto de la manera que quieras.
Una técnica sería usar dos elementos de iframe con el atributo src establecido en el archivo xml correspondiente disponible desde el servidor (suponiendo que esté expuesto a través de un directorio virtual):
<iframe src="/myapp/Document1.xml"><iframe src="/myapp/Document2.xml">
Alternativamente, podría utilizar una solicitud de tipo AJAX para recuperar los documentos xml y luego incrustarlos en el documento HTML de forma dinámica utilizando algo como:
getElementById("myDiv").innerText = ajax.response;
Si desea que el navegador muestre su XML
como XML
, debe estar en su propio documento, como un iframe
o un frame
. DIV
no hará el trabajo!
Además, en el encabezado HTTP
de la solicitud que sirve el iframe
debe enviar Content-Type: text/xml
, para que el navegador pueda entender que este contenido es un XML
.
Pero, si realmente necesita verlo en un DIV, tendrá que crear una función de representación XML
XML2HTML
. Puede usar la etiqueta HTML
PRE
para eso, si su cadena XML
ya está formateada (saltos de línea y pestañas). En ese caso, deberá reemplazar <
to >
en la cadena XML
Conclusión: The browser
no puede representar XML
y HTML
en el mismo documento. Si lo necesita, solo tiene que solucionarlo.
Esta es la forma más fácil que encontré para mostrar XML como texto en la misma página para copiar y pegar:
var xml = document.getElementById(''svg_element'').innerHTML;
document.getElementById(''svg_pre'').innerText = xml;