资讯专栏INFORMATION COLUMN

JavaScript JavaScript与XML——“XML DOM”的注意要点

figofuture / 2956人阅读

摘要:如发生解析错误时,仍然会从中返回一个对象。但这个对象的文档元素是对象根元素第一个子元素为。

DOM2级核心

docuent.implementation中引入了createDocument()方法,IE9支持该方法,如:

var xmldom = document.implementation.createDocument(namespaceUri, root, doctype);

一般来说只用传第二个参数即可:

var xmldom = document.implementation.createDocument("", "root", null);

创建一个新的、文档元素为root的XML文档,可以使用下面代码:

var xmldom = document.implementation.createDocument("", "root", null); 命名空间URI为空字符表示未指定命名空间,给文档类型传入null即不指定文档类型。
console.log(xmldom.documentElement.tagName); //"root"

var child = xmldom.createElement("child");
xmldom.documentElement.appendChild(child);
DOMParser类型

Firefox、Opera、Chrome、Safari支持(IE8不支持),

DOMParse类型可将XML解析为DOM文档。

创建一个DOMParse实例,再调用

parseFromString()方法。这个方法接受两个参数:要解析的XML字符串和内容类型(内容类型始终为"text/xml")。返回值是一个Document实例。

如:

var parser = new DOMParse();
var xmldom = parser.parseFromString("", "text/xml");

alert(xmldom.documentElement.tagName); //"root"
alert(xmldom.documentElement.firstChild.tagName); //"child"
var anotherChild = xmldom.createElement("child");
xmldom.documentElement.appendChild(anthorChild);
var children = xmldom.getElementsByTagName("child");
alert(children.length); //2

发生解析错误时,仍然会从parseFromString()中返回一个Document对象。但这个对象的文档元素是

(Firefox、Opera);对象根元素第一个子元素为(Safari、Chrome)。

parseerror元素的内容是对解析错误地描述。通过getElementsByTagName()查找parsererror确定是否有解析错误。

var parser = new DOMParser(),
    xmldom,
    errors;
try {
    xmldom = parser.parseFromString("", "text/xml"); //这里少了一个闭标签
    errors = xmldom.getElementsByTagName("parsererror");
    if (errors.length > 0) {
        throw new Error("Parsing error!");
    }
} catch (ex) {
    console.log(ex.message); //Parsing error!
}
XMLSerializer类型

此类可将DOM文档序列化为XML字符串。(IE6~8不支持)。

要序列化DOM文档,首相必须创建XMLSerializer实例,然后将文档传入其serializerToString()方法:

var xmldom = document.implementation.createDocument("", "root", null);
xmldom.documentElement.appendChild(xmldom.createElement("child"));

var serializer = new XMLSerializer();
var xml = serializer.serializeToString(xmldom);

console.log(xml); //
IE8之前版本中的XML

(略)

虽然可以通过XML DOM文档对象加载XML文件,但公认的还是使用XMLHttpRequest对象比较好。

跨浏览器处理XML 解析XML
function parseXml(xml) {
    var xmldom = null;
    if (typeof DOMParser != "undefined") {
        xmldom = (new DOMParser()).parseFromString(xml, "text/xml");
        var errors = xmldom.getElementsByTagName("parsererror");
        if (errors.length > 0) {
            throw new Error("XML parsing error: " + errors[0].textContent);
        }
    } else if (typeof ActiveXObjext != "undefined") {
        xmldom = createDocument();
        xmldom.loadXML(xml);
        if (xmldom.parseError != 0) {
            throw new Error("XML parsing error: " + xmldom.parseError.reason);
        }
    } else {
        throw new Error("No XML parser available.");
    }
    return xmldom;
}
序列化XML
function serializeXml(xmldom) {
    if (typeof XMLSerializer != "undefined") {
        return (new XMLSerializer()).serializeToString(xmldom);
    } else if (typeof xmldom.xml != "undefined") {
        return xmldom.xml;
    } else {
        throw new Error("Could not serialize XML DOM.");
    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/110344.html

相关文章

  • JavaScript JavaScriptXML——“XML DOM注意要点

    摘要:如发生解析错误时,仍然会从中返回一个对象。但这个对象的文档元素是对象根元素第一个子元素为。 DOM2级核心 docuent.implementation中引入了createDocument()方法,IE9支持该方法,如: var xmldom = document.implementation.createDocument(namespaceUri, root, doctype); ...

    melody_lql 评论0 收藏0
  • JavaScript JavaScriptXML——“XSLT”注意要点

    摘要:中的它不是一种正式的规范,,是的另一表现形式。是第一个支持它的。主要的功能是用来将转换为文档。方法用于取得当前参数的值,参数为命名空间和参数的内部名称。跨浏览器使用这个函数接收两个参数要执行转换的上下文节点和文档对象。 IE中的XSTL 它不是一种正式的规范,, 是XPath的另一表现形式。 IE是第一个支持它的。 简单的XSTL转换 XML文档的方式就是将它们分别加到一个DOM文档中...

    wupengyu 评论0 收藏0
  • JavaScript JavaScriptXML——“XSLT”注意要点

    摘要:中的它不是一种正式的规范,,是的另一表现形式。是第一个支持它的。主要的功能是用来将转换为文档。方法用于取得当前参数的值,参数为命名空间和参数的内部名称。跨浏览器使用这个函数接收两个参数要执行转换的上下文节点和文档对象。 IE中的XSTL 它不是一种正式的规范,, 是XPath的另一表现形式。 IE是第一个支持它的。 简单的XSTL转换 XML文档的方式就是将它们分别加到一个DOM文档中...

    LeexMuller 评论0 收藏0
  • JavaScript AjaxComet——“XMLHttpRequest对象”注意要点

    摘要:在中,对象是通过库中的对象实现的。可以检测对象的属性,该属性表示请求响应过程的当前活动阶段。已经调用但尚未接收到响应接收。由于内存原因,不建议重用对象。头部信息对象提供了操作请求头部和响应头部信息的方法。建议使用自定义的头部名称。 在IE5中,XHR对象是通过MSXML库中的ActiveX对象实现的。在IE中可能会遇到三种不同版本的XHR对象,即MSXML2.XMLHttp、MSXML...

    Martin91 评论0 收藏0
  • JavaScript DOM

    摘要:但上述两个情况中都是同一份文档。提示对象是对象的一部分,可通过属性对其进行访问。返回包含指定节点的子节点的集合,该集合为即时更新的集合。对象在中,对象表示元素属性节点的无序集合。 DOM简介( Document Object Model 文档对象模型) W3C W3C 文档对象模型 (DOM) 是中立于平台和语言的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。W3C D...

    Nekron 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<