javascript创建XML对象转换为字符串,创建字符串转换为XML对象

原文地址:http://iceworldvip.blog.51cto.com/5438460/1341677

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://iceworldvip.blog.51cto.com/5438460/1341677

   今天使用FusionCharts遇到了一个问题,由于情况限制,我只可以使用javascript来完成Data.xml的准备,需要动态生成。

   那么就需要手动创建一个XML对象,并且转换字符串。这样可以避免强行使用字符串拼接的方法。

 

好了废话不多说了。直接看代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
function createXMLDOM() {
    var xmlDOM;
    if (window.ActiveXObject) {
        xmlDOM = new ActiveXObject('Microsoft.XMLDOM');
    else if (document.implementation
            && document.implementation.createDocument) {
        xmlDOM = document.implementation.createDocument(''''null);
    else {
        alert('您的浏览器不支持文档对象XMLDOM');
        return;
    }
    return xmlDOM;
}

这段代码可以支持大部分浏览器,所以调用之后可以直接得到XMLDOM对象:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
 * 创建XML 文件例子:
 * <graph>
 *     <set name='1' value='1'></set>
 *     <set name='2' value='2'></set>
 * </graph>
 */
function createXML() {
    var xmlDOM = createXMLDOM();
    if (xmlDOM) {
        var graph = xmlDOM.createElement('graph');
        for (var i = 0; i < 2; i++) {
            var set_name_value = xmlDOM.createElement('set');
            set_name_value.setAttribute('name', i + 1);
            set_name_value.setAttribute('value', i + 1);
            graph.appendChild(set_name_value);
        }
        xmlDOM.appendChild(graph);
        return parserXMLToString(xmlDOM);
    }
    return;
}

接下来是解析:

1
2
3
4
5
6
7
8
function parserXMLToString(xmlDOM) {
    if (window.ActiveXObject) {
        return xmlDOM.xml;
    else if (document.implementation
            && document.implementation.createDocument) {
        return new XMLSerializer().serializeToString(xmlDOM);
    }
}

这里的xmlDOM.xml没有测试,下面的方法经过测试。

 

下面是从String转换为xmlDOM对象:

1
2
3
4
5
function parserStringToXMLDOM(str) {
    var parser = new DOMParser();
    var xmlDOM = parser.parseFromString(str, 'text/xml');
    return xmlDOM;
}

这样就可以在javascript中完成xml与String之间的转换了。

本文出自 “iceworldvip” 博客,请务必保留此出处http://iceworldvip.blog.51cto.com/5438460/1341677

posted on 2016-09-26 13:09  ZhYQ_note  阅读(967)  评论(0)    收藏  举报

导航