使用javascript从.config文件中读取值

时间:2015-05-29 13:38:38

标签: javascript xml web-config configuration-files xmldom

我尝试使用以下代码从扩展名为.config的文件中获取值, 但我无法得到它............

如果我将文件扩展名从.config更改为.xml,则其工作正常(我能够实现预期的结果)

//-----------------------------------------------------

 xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
        xmlDoc.async = false;
        var b = xmlDoc.load("books.config");//load a file
document.write("<br>" + xmlDoc.length);
        document.write("<br>" + xmlDoc.getElementsByTagName("book").length);
        for (j = 0; j < xmlDoc.getElementsByTagName("book").length; j++) {
            // x = xml.getElementsByTagName("FeatureToggles")[j].attributes;
            x = xmlDoc.getElementsByTagName("book")[j].attributes;
            y = x.getNamedItem("category");
            document.write("<br>" +"category = "+ x.getNamedItem("category").nodeValue);
            document.write("<br>" + x.length);
            if (x.getNamedItem("cover")!=null && x.getNamedItem("cover").nodeValue == "paperback") {
                document.write("Found");
            }
        }

//-----------------------------------------------------------------------------

Sample xml/config:

<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="web">
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
<price>49.99</price>
</book>
<book category="web" cover="paperback">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>

2 个答案:

答案 0 :(得分:0)

这可能是因为{ "_id" : "NmBYYasdsa", "objectId" : "asdsd" "text" : "test", .... "publishedAt" : ISODate("2015-05-28T15:31:51Z"), "updatedAt" : ISODate("2015-05-28T15:31:51Z"), "data" : { ..... "likeCount" : 0, "replyCount" : 0 } } 方法需要XML文件而您的浏览器不知道.config扩展名实际上是XML。如果您从服务器提供此文件,则可以添加正确的标头以告知浏览器.config文件是XML。没有标题,您的浏览器必须尝试解决它(此过程在此处记录:https://msdn.microsoft.com/en-us/library/ms775148%28v=vs.85%29.aspx)。如果此假设正确,则您在问题中设置的变量data(加载方法的返回值)应为false。

  

xmlSource:包含指定其位置的URL的字符串   XML文件。

https://msdn.microsoft.com/en-us/library/ms762722%28v=vs.85%29.aspx

要解决此问题,您可以使用正确的标头提供文件(如果这是其他人将使用的应用程序,最好的方法),告诉您的浏览器将.config文件作为XML处理(可能不是一个好主意)或只是使用.xml扩展名,因为这似乎是由浏览器自动映射的。

答案 1 :(得分:0)

默认情况下,浏览器中的JavaScript不会从文件系统加载任意文件。

为了达到你想要的目的:

  1. 在浏览器中禁用cors安全性
  2. 在index.html和config
  3. 目录中启动一个小型服务器

    此流程概述为docs

    注意:在您完成后还原浏览器设置,因为您有效地禁用了重要的安全措施。

    更新:我没有彻底阅读您的问题,docs提到了本地XML的工作原理。