如何在Javascript中对大型XML字符串进行硬编码?

时间:2013-01-10 12:38:43

标签: javascript xml

我需要在JS中处理大型XML。有没有更好的解决方案,然后复制/粘贴(从xml文件到js文件)并引用近1000行的xml文件?

是否可以在Flash中“嵌入”该xml文件作为资源?

2 个答案:

答案 0 :(得分:5)

通常的解决方案就是将XML文件放在外面并使用XMLHttpRequest获取它:

function fetchXMLFile(url, callback) {
    var httpRequest = new XMLHttpRequest();
    httpRequest.onreadystatechange = function() {
        if (httpRequest.readyState === 4) {
            if (httpRequest.status === 200) {
                var xml = httpRequest.responseXML;
                if (callback) callback(xml);
            }
        }
    };
    httpRequest.open('GET', url);
    httpRequest.send(); 
}

fetchFile('myFile.xml', function(xml){
   // use the xml
});

如果你真的想在代码中嵌入数据,你必须在你最喜欢的编辑器中使用正则表达式或构建一个小工具来进行嵌入,但很少将其视为将大数据与源合并的最佳实践码。这两个部分通常具有不同的生命周期。

答案 1 :(得分:1)

您可以尝试以十六进制或json表示形式编写它。

例如,“此字符串”将变为“\ x74 \ x68 \ x69 \ x73 \ x20 \ x73 \ x74 \ x72 \ x69 \ x6e \ x67”。 有很多在线工具可以帮到你。例如this one,将完成工作,但不会包含“\ x”,因此javascript会将其解释为普通字符串。要附加\ x并使用正确的十六进制格式在任何javascript控制台中即时执行此函数:(当然用生成的十六进制数字替换带引号的文本)

"7468697320737472696e67".replace(/([A-F\d]{2})/gi, "\\x$1"); // \x74...\x67

然后只需将此字符串复制到您的源代码中即可。如果你想解析xml,看看this - 另一个在线工具,将你的xml转换成json,有效的javascript对象;在分配时直接使用它。