簡體   English   中英

用javascript編寫一個XML文件

[英]Write an XML file in javascript

我需要使用 Java 腳本編寫一個 XML 文件。 到目前為止,我能夠想出的代碼如下。

function loadXMLDoc(dname) {    
    if (window.XMLHttpRequest) {
        xhttp = new XMLHttpRequest();
    }
    else {
        xhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    xhttp.open("GET", dname, false);
    xhttp.send();
    return xhttp.responseXML;
} 

function GenerateDocument() {
    var xmlDoc = loadXMLDoc("XMLFile.xml");

    newelm = xmlDoc.createElement("Company");
    newAtt = xmlDoc.createAttribute("Name");
    newAtt.nodeValue = "ABC";

    //newelm.setAttributeNode(newAtt);
    x = xmlDoc.getElementsByTagName("Companies");
    x.appendChild(newelm);
}

我可以在 xmlDoc 對象中看到元素和屬性,但我無法將子元素和屬性添加到 XML 文件。 任何幫助表示贊賞。

謝謝

正如 xato 所提到的,您將無法修改通過該 AJAX 調用加載的實際文件。 瀏覽器中的 JavaScript 通常不允許您編寫文件。 但是,您可以在完成修改后將 XML 寫出到瀏覽器,或者將其發送回服務器以由服務器端腳本編寫。

編輯:完成對 XML 文檔的操作后,您可以使用 XMLSerializer 將其作為文本寫出到瀏覽器或將其存儲在字符串中。

var s = new XMLSerializer();
document.write(s.serializeToString(xmlDoc));

來源: https : //developer.mozilla.org/en/XMLSerializer

如果 xml 很大,您可以考慮使用 SAX 解析器!

通過JS
您還可以使用 zXml.js,它將處理跨瀏覽器的依賴關系並提供類似於 IE 的功能和屬性

您可以使用加載 XML

xmldom = new ActiveXObject("MSXML2.DOMDocument.6.0");

//loading an xml file is async by default
//use xmldom.async = false; to load sync

xmldom.load("addr.xml"); //give the xml file as an input 

//check if xml has errors
if(xmldom.parseError.errorCode)
{
    alert(xmldom.parseError.reason);
    return;
}
else //successfully loaded xml
{
     e = document.createElement("test");
     e.setAttribute("abc","xyz"); 

     document.getElementById("id").appendChild(e);
}

你為什么不使用?

      xmlDoc.setAttribute("Name","abc");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM