w3schools tag tab page color change javascript xml xmlwriter

javascript - tag - title of page html



Crear XML en Javascript (5)

Me pregunto si es posible crear un archivo XML con algunos datos en Javascript. Tengo los datos almacenados en variables.

He buscado en Google un poco y no parece que se ha hablado mucho. Pensé que podría usar XMLWriter como este:

var XML = new XMLWriter(); XML.BeginNode ("testing"); XML.Node("testingOne"); XML.Node("TestingTwo"); XML.Node("TestingThree"); XML.EndNode();

como se indica en este tutorial: EHow Tutorial

Sin embargo, cuando ejecuto este código obtengo el siguiente error:

ReferenceError: XMLWriter is not defined

¿Alguna idea sobre cómo puedo empezar con esto?

¡Gracias por adelantado!


Simplemente usar

var xmlString = ''<?xml version="1.0" ?><root />''; var xml = jQuery.parseXML(xml);

Es jQuery.parseXML , por lo que no hay que preocuparse por los trucos entre navegadores. Usa jQuery como HTML, usa el motor XML nativo.


Solo funciona en IE

$(function(){ var xml = ''<?xml version="1.0"?><foo><bar>bar</bar></foo>''; var xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="false"; xmlDoc.loadXML(xml); alert(xmlDoc.xml); });

Luego presione xmlDoc.xml en su código java.



Descargo de responsabilidad: la siguiente respuesta asume que está utilizando el entorno JavaScript de un navegador web.

JavaScript maneja XML con ''objetos XML DOM''. Puede obtener tal objeto de tres maneras:

1. Creando un nuevo objeto XML DOM

var xmlDoc = document.implementation.createDocument(null, "books");

El primer argumento puede contener el URI de espacio de nombres del documento que se creará, si el documento pertenece a uno.

Fuente: https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createDocument

2. Recuperando un archivo XML con XMLHttpRequest

var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (xhttp.readyState == 4 && xhttp.status == 200) { var xmlDoc = xhttp.responseXML; //important to use responseXML here } xhttp.open("GET", "books.xml", true); xhttp.send();

3. Analizar una cadena que contiene XML serializado

var xmlString = "<root></root>"; var parser = new DOMParser(); var xmlDoc = parser.parseFromString(xmlString, "text/xml"); //important to use "text/xml"

Cuando haya obtenido un objeto DOM de XML, puede usar métodos para manipularlo como

var node = xmlDoc.createElement("heyHo"); var elements = xmlDoc.getElementsByTagName("root"); elements[0].appendChild(node);

Para una referencia completa, consulte http://www.w3schools.com/xml/dom_intro.asp

Nota: Es importante que no utilice los métodos proporcionados por el espacio de nombres del documento, es decir,

var node = document.createElement("Item");

Esto creará nodos HTML en lugar de nodos XML y dará como resultado un nodo con nombres de etiqueta en minúsculas. Los nombres de etiquetas XML distinguen entre mayúsculas y minúsculas en contraste con los nombres de etiquetas HTML.

Puede serializar objetos XML DOM de esta manera:

var serializer = new XMLSerializer(); var xmlString = serializer.serializeToString(xmlDoc);


Tenga en cuenta que necesitamos crear el siguiente documento XML:

<?xml version="1.0"?> <people> <person first-name="eric" middle-initial="H" last-name="jung"> <address street="321 south st" city="denver" state="co" country="usa"/> <address street="123 main st" city="arlington" state="ma" country="usa"/> </person> <person first-name="jed" last-name="brown"> <address street="321 north st" city="atlanta" state="ga" country="usa"/> <address street="123 west st" city="seattle" state="wa" country="usa"/> <address street="321 south avenue" city="denver" state="co" country="usa"/> </person> </people>

Podemos escribir el siguiente código para generar el XML anterior.

var doc = document.implementation.createDocument("", "", null); var peopleElem = doc.createElement("people"); var personElem1 = doc.createElement("person"); personElem1.setAttribute("first-name", "eric"); personElem1.setAttribute("middle-initial", "h"); personElem1.setAttribute("last-name", "jung"); var addressElem1 = doc.createElement("address"); addressElem1.setAttribute("street", "321 south st"); addressElem1.setAttribute("city", "denver"); addressElem1.setAttribute("state", "co"); addressElem1.setAttribute("country", "usa"); personElem1.appendChild(addressElem1); var addressElem2 = doc.createElement("address"); addressElem2.setAttribute("street", "123 main st"); addressElem2.setAttribute("city", "arlington"); addressElem2.setAttribute("state", "ma"); addressElem2.setAttribute("country", "usa"); personElem1.appendChild(addressElem2); var personElem2 = doc.createElement("person"); personElem2.setAttribute("first-name", "jed"); personElem2.setAttribute("last-name", "brown"); var addressElem3 = doc.createElement("address"); addressElem3.setAttribute("street", "321 north st"); addressElem3.setAttribute("city", "atlanta"); addressElem3.setAttribute("state", "ga"); addressElem3.setAttribute("country", "usa"); personElem2.appendChild(addressElem3); var addressElem4 = doc.createElement("address"); addressElem4.setAttribute("street", "123 west st"); addressElem4.setAttribute("city", "seattle"); addressElem4.setAttribute("state", "wa"); addressElem4.setAttribute("country", "usa"); personElem2.appendChild(addressElem4); var addressElem5 = doc.createElement("address"); addressElem5.setAttribute("street", "321 south avenue"); addressElem5.setAttribute("city", "denver"); addressElem5.setAttribute("state", "co"); addressElem5.setAttribute("country", "usa"); personElem2.appendChild(addressElem5); peopleElem.appendChild(personElem1); peopleElem.appendChild(personElem2); doc.appendChild(peopleElem);

Si cualquier texto debe escribirse entre una etiqueta, podemos usar la propiedad innerHTML para lograrlo.

Ejemplo

elem = doc.createElement("Gender") elem.innerHTML = "Male" parent_elem.appendChild(elem)

Para más detalles por favor siga el siguiente enlace. El ejemplo anterior se ha explicado allí con más detalle.

https://developer.mozilla.org/en-US/docs/Web/API/Document_object_model/How_to_create_a_DOM_tree