<?xml version="1.0" encoding="ISO-8859-1" ?>
- <!-- Copyright w3school.com.cn
-->
- <!-- W3School.com.cn bookstore example
-->
- <bookstore>
- <book category="children">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
- <book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</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>
- <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>
</bookstore>这个是我的XML文件<script language="javascript">
function loadXML(XMLFile)
{
var XMLDoc;
if(window.ActiveXObject) //IE浏览器
{
alert('ie')
XMLDoc = new ActiveXObject('Microsoft.XMLDOM');
XMLDoc.async = false;
XMLDoc.load(XMLFile);
}
else if (document.implementation&&document.implementation.createDocument) //Firefox, Mozilla, Opera, etc 浏览器
{
alert('FF')
XMLDoc = document.implementation.createDocument('', '', null);
XMLDoc.load(XMLFile);
}
else
{
return null;
}
return XMLDoc;
}
function checkXMLDocObj(XMLFile)
{
var XMLDoc = loadXML(XMLFile);
if(XMLDoc==null)
{
alert('您的浏览器不支持XML文件读取,于是本页面禁止您的操作,推荐使用IE5.0以上可以解决此问题!');
window.location.href='#';
}
return XMLDoc;
}
var XMLDoc = checkXMLDocObj("book.xml");
alert(XMLDoc);
var x = XMLDoc.getElementsByTagName("bookstore/book/title");
alert(x.length);
var y = x.childNodes[0];
alert(y);
var z = y.nodeValue;
alert(z);
</script>这个是我的读取js它的js代码,我最后测试做了一下输出,我发现alert(XMLDoc)显示的是object ,alert(x.length);显示的是0,然后后面的输出根本不运行,请问下这是为什么?这里哪里有问题?我用的是IE浏览器,判断浏览器的输出没问题,以上代码是刚从网上搜到的,XML初学者,请各位尽量讲详细一点 谢谢~!
- <!-- Copyright w3school.com.cn
-->
- <!-- W3School.com.cn bookstore example
-->
- <bookstore>
- <book category="children">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
- <book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</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>
- <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>
</bookstore>这个是我的XML文件<script language="javascript">
function loadXML(XMLFile)
{
var XMLDoc;
if(window.ActiveXObject) //IE浏览器
{
alert('ie')
XMLDoc = new ActiveXObject('Microsoft.XMLDOM');
XMLDoc.async = false;
XMLDoc.load(XMLFile);
}
else if (document.implementation&&document.implementation.createDocument) //Firefox, Mozilla, Opera, etc 浏览器
{
alert('FF')
XMLDoc = document.implementation.createDocument('', '', null);
XMLDoc.load(XMLFile);
}
else
{
return null;
}
return XMLDoc;
}
function checkXMLDocObj(XMLFile)
{
var XMLDoc = loadXML(XMLFile);
if(XMLDoc==null)
{
alert('您的浏览器不支持XML文件读取,于是本页面禁止您的操作,推荐使用IE5.0以上可以解决此问题!');
window.location.href='#';
}
return XMLDoc;
}
var XMLDoc = checkXMLDocObj("book.xml");
alert(XMLDoc);
var x = XMLDoc.getElementsByTagName("bookstore/book/title");
alert(x.length);
var y = x.childNodes[0];
alert(y);
var z = y.nodeValue;
alert(z);
</script>这个是我的读取js它的js代码,我最后测试做了一下输出,我发现alert(XMLDoc)显示的是object ,alert(x.length);显示的是0,然后后面的输出根本不运行,请问下这是为什么?这里哪里有问题?我用的是IE浏览器,判断浏览器的输出没问题,以上代码是刚从网上搜到的,XML初学者,请各位尽量讲详细一点 谢谢~!
但是我真找不到哪里错了,大家帮忙看看,谢谢
这个也不行,因为我刚输出alert(XMLDoc.documentElement) 测试的时候显示的是null是不是没获取到?
<!-- Copyright w3school.com.cn
-->
<!-- W3School.com.cn bookstore example
-->
<bookstore>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</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>
<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>
</bookstore>
二.见代码解释<script language="javascript">
function loadXML(XMLFile)
{
var XMLDoc;
if(window.ActiveXObject) //IE浏览器
{
alert('ie')
XMLDoc = new ActiveXObject('Microsoft.XMLDOM');
XMLDoc.async = false;
XMLDoc.load(XMLFile);
}
else if (document.implementation&&document.implementation.createDocument) //Firefox, Mozilla, Opera, etc 浏览器
{
alert('FF')
XMLDoc = document.implementation.createDocument('', '', null);
XMLDoc.load(XMLFile);
}
else
{
return null;
}
return XMLDoc;
}
function checkXMLDocObj(XMLFile)
{
var XMLDoc = loadXML(XMLFile);
if(XMLDoc==null)
{
alert('您的浏览器不支持XML文件读取,于是本页面禁止您的操作,推荐使用IE5.0以上可以解决此问题!');
window.location.href='#';
}
return XMLDoc;
}
var XMLDoc = checkXMLDocObj("book.xml");
alert(XMLDoc);
var x = XMLDoc.getElementsByTagName("bookstore/book/title");
alert(x.length);
var y = x[0].childNodes[0]; //上面的X取得是是一个数组 所以这里你可以用循环全给取出来
alert(y);
var z = y.nodeValue;
alert(z);
</script>
XMLDoc.getElementsByTagName("bookstore/book/title"); // 这句只有IE支持这样写
<script language="javascript">
function loadXML(XMLFile){
var XMLDoc;
if (window.ActiveXObject) {
alert('ie')
XMLDoc = new ActiveXObject('Microsoft.XMLDOM');
XMLDoc.async = false;
XMLDoc.load(XMLFile);
} else if (document.implementation && document.implementation.createDocument) {
XMLDoc = document.implementation.createDocument('', '', null);
XMLDoc.async = false;
XMLDoc.load(XMLFile);
} else {
return null;
}
return XMLDoc;
}
function checkXMLDocObj(XMLFile){
var XMLDoc = loadXML(XMLFile);
if (XMLDoc == null) {
alert('您的浏览器不支持XML文件读取,于是本页面禁止您的操作,推荐使用IE5.0以上可以解决此问题!');
window.location.href = '#';
}
return XMLDoc;
}
var XMLDoc = checkXMLDocObj("temp.xml");
var x = XMLDoc.getElementsByTagName("title");
var y = x[0];
var z = y.firstChild.nodeValue;
alert(z);
</script>
<bookstore>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
</bookstore>先这样试试var x = XMLDoc.getElementsByTagName("book");
我总结下你的错误
一.你的XML文件就是COPY多了个- .XML格式比较严格.
二.
var x = XMLDoc.getElementsByTagName("bookstore/book/title"); // 这样只有IE可以
var x = XMLDoc.getElementsByTagName("title"); // 这样才是正确的三.在FF下的分支 你没有设置同步.XMLDoc.async = false;
四.var x = XMLDoc.getElementsByTagName("title"); 是一个数组 所以要在这基础上取值用x[i].**
----
book.xml就是我刚才改的.js代码如下
<script language="javascript">
function loadXML(XMLFile)
{
var XMLDoc;
if(window.ActiveXObject) //IE浏览器
{
XMLDoc = new ActiveXObject('Microsoft.XMLDOM');
XMLDoc.async = false;
XMLDoc.load(XMLFile);
}
else if (document.implementation&&document.implementation.createDocument) //Firefox, Mozilla, Opera, etc 浏览器
{
XMLDoc = document.implementation.createDocument('', '', null);
XMLDoc.async = false;
XMLDoc.load(XMLFile);
}
else
{
return null;
}
return XMLDoc;
}
function checkXMLDocObj(XMLFile)
{
var XMLDoc = loadXML(XMLFile);
if(XMLDoc==null)
{
alert('您的浏览器不支持XML文件读取,于是本页面禁止您的操作,推荐使用IE5.0以上可以解决此问题!');
window.location.href='#';
}
return XMLDoc;
}
var XMLDoc = checkXMLDocObj("book.xml");
alert(XMLDoc);
var x = XMLDoc.getElementsByTagName("title");
var y = x[0].childNodes[0];
var z = y.nodeValue;
alert(z);
</script>