原文地址: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