0

これはスタックオーバーフローに関する私の最初の質問です。皆さんが私を助けてくれることを願っています。

これが私の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を逆方向にループするにはどうすればよいですか?

4

3 に答える 3

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や同様の最新ツールに頼ることなく;)

于 2012-09-06T23:45:52.340 に答える
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>");

}

<a>PS:タグのコードに「>」がありません。目的の出力がわからないので、推測しました。

于 2012-09-07T00:03:52.327 に答える
0

並べ替えと反復の 1 つの方法を示す記事を次に示します。

http://blogs.msdn.com/b/kaevans/archive/2006/04/17/577456.aspx

于 2012-09-06T23:47:14.020 に答える