DOM2級中的XML
針對非IE瀏覽器的其他瀏覽器,即屬於DOM2級瀏覽器(opera、firefox、chrome、safair),DOM2級使用document.implementation對象中的creatDocument()方法來創建xmlDom。
1、創建xmlDom
var xmlDom = document.implementation.creatDocument(‘‘,‘root‘,null); //創建xmldom,並且提供了跟標簽root
第一個參數:命名空間;
第二個參數:xml文件的跟標簽;
第三個參數:文檔聲明。
2、使用標準的DOM創建節點
var xmlDom = document.implementation.creatDocument(‘‘,‘root‘,null);
var user = xmlDom.creatElement(‘user‘);
xmlDom.appendChild(user);
var userText = xmlDom.creatTextNode(‘lql‘);
user.appendChild(userText);
PS:DOM2級中的xmlDom無法通過loadxml()方法直接用字符串創建xml文檔。支持load()方法載入外部文件
一:同步加載文件,使用load()方法
var xmlDom = document.implementation.creatDocument(‘‘,‘root‘,null);
xmlDom.async = false;
var user = xmlDom.creatElement(‘user‘);
xmlDom.appendChild(user);
xmlDom.load(‘demo.xml‘);
alert(xmlDom.getElementByTagName(‘user‘)[0].tagName); //輸出user
PS:DOM2級沒有xml屬性進行序列化排序
二:異步加載文件,使用load()方法
var xmlDom = document.implementation.creatDocument(‘‘,‘root‘,null);
xmlDom.async = true;
xmlDom.onload = function(){
alert(xmlDom.getElementByTagName(‘user‘)[0].textContent);
}
xmlDom.load("demo.xml");
PS:load()方法只支持firefox瀏覽器和新版本的opera瀏覽器,其他瀏覽器不支持。
問題總結:
1、不能使用字符串來創建xml,比如類似IE中的loadxml()方法;
2、不能使用xml屬性序列化字符標簽
解決問題1://模擬loadxml()方法創建xml字符串
var xmlParse = new DOMParse();
var xmlStr = ‘<root><user>lql</user></root>‘;
var xmlDom = xmlParse.parseFromString(xmlStr,‘text/xml‘);
alert(xmlDom.getElementByTagName(‘user‘)[0].tagName);
解決問題2://模擬xml屬性序列化字符標簽
var serializer = new XMLSerializer();
var xml = serializer.serializerToString(xmlDom);
alert(xml);
DOM2級中的XML