这是关于堆栈溢出的第一个问题,我希望你们能帮助我。
这是我的xml
<?xml version="1.0"?>
<RecentPhotoUploads>
<PHOTO><SOURCE>6171.jpg</SOURCE></PHOTO>
<PHOTO><SOURCE>6173.jpg</SOURCE></PHOTO>
<PHOTO><SOURCE>6895.jpg</SOURCE></PHOTO>
<PHOTO><SOURCE>Tulips.jpg</SOURCE></PHOTO>
</RecentPhotoUploads>
这是我的javascript代码
var xml=loadXMLDoc("../upload.xml");
var source="/RecentPhotoUploads/PHOTO/SOURCE"
var nodes=xml.evaluate(source, xml, null, XPathResult.ANY_TYPE, null);
var result=nodes.iterateNext();
while (result)
{
document.write("<h2>" + result.childNodes[0].nodeValue + "</h2>");
document.write("<a href='../pics/" + result.childNodes[0].nodeValue + "</a>");
result=nodes.iterateNext();
}
我如何向后循环这个xpathresult?
答案 0 :(得分:2)
为什么你会向后导航?你可以向后打印......
var xml=loadXMLDoc("../upload.xml");
var source="/RecentPhotoUploads/PHOTO/SOURCE"
var nodes=xml.evaluate(source, xml, null, XPathResult.ANY_TYPE, null);
var result=nodes.iterateNext();
var buffer = "";
while (result) {
buffer = "<h2>" + result.childNodes[0].nodeValue + "</h2>"
+ "<a href='../pics/" + result.childNodes[0].nodeValue + "'>"
+ result.childNodes[0].nodeValue + "</a>"
+ buffer;
result=nodes.iterateNext();
}
document.write(buffer);
不使用documentFragment和类似的现代工具;)
答案 1 :(得分:0)
这篇文章展示了一种排序和迭代的方法:
http://blogs.msdn.com/b/kaevans/archive/2006/04/17/577456.aspx
答案 2 :(得分:0)
首先更改XPathResult的设置。您需要一个有序的快照类型。 iterateNext()将无效,因为它没有数字键。
var result = document.evaluate(source, xml, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
然后像这样循环。
for (var i = result.snapshotLength - 1; i >= 0; i--){
document.write("<h2>" + result.snapshotItem(i).textContent + "</h2>");
document.write("<a href='../pics/" + result.snapshotItem(i).textContent + "'>"
+ result.snapshotItem(i).textContent + "</a>");
}
PS:你错过了'&gt;'在<a>
标记的代码中。不确定你的目标是什么,所以我猜了一下。