使用javascript从.config文件读取值
问题描述:
我尝试使用下面的代码 从.config扩展名的文件中获取值,但我无法获取它...........使用javascript从.config文件读取值
如果我更改文件extesion从的.config到.XML在其工作正常(我能acheive预期的结果)
//-----------------------------------------------------
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>
答
这可能是因为该load
方法需要一个XML文件,您的浏览器不知道.config扩展名实际上是XML。如果您从服务器提供此文件,则可以添加适当的标头以告诉浏览器.config文件是XML。如果没有标题,您的浏览器必须尝试解决(此过程在此处记录:https://msdn.microsoft.com/en-us/library/ms775148%28v=vs.85%29.aspx)。如果这个假设是正确的,那么您在问题中设置的变量b
(load方法的返回值)应该是false。
xmlSource:包含指定 XML文件位置的URL的字符串。
https://msdn.microsoft.com/en-us/library/ms762722%28v=vs.85%29.aspx
为了解决这个问题,你可以成为用正确的头文件(如果这是一个应用程序别人会用最好的方法),告诉你的浏览器处理.config文件的XML(可能不是一个好主意),或者只是使用.xml扩展名,因为这似乎是由浏览器自动映射的。
您是否必须使用activeX对象?如果不是强制性的,一个简单的ajax + js将能够解析你的xml。 –
我能解析一个XML,但我想解析一个.config文件你可以请求帮助 –
作为加载函数,我想你的服务器返回你的文件,你可以尝试手动调用http:// yourserver /books.config和http://yourserver/books.xml。如果前者失败,最有可能是因为你的web服务器没有配置为返回.config文件 –