0

ID を返す JavaScript で単純な ajax 呼び出しを行っています。次に、XML の一部として関連する説明文字列を含むすべての ID を含む XML ファイルを取得するために、別の ajax 呼び出しを行う必要があります。

ID の説明は次の形式で返されます。

<Category>
  <Id>1</Id>
  <Descriptor>Accounts</Descriptor>
</Category>
<Category>
  <Id>2</Id>
  <Descriptor>Marketing</Descriptor>
</Category>
<Category>
  <Id>3</Id>
  <Descriptor>HR</Descriptor>
</Category>
etc...

この XML に対して ID 値を検索し、JavaScript を使用して記述子文字列を返すにはどうすればよいですか?

4

3 に答える 3

2

jQuery を使用すると、次のことができます。

var xml = $.ajax({......}); //your xml
var numb = $.ajax({......}); //returns 1,2 or 3 etc...

var descriptor = $('id', xml).filter(function() {
    return $(this).text() == numb; //filter elements based on text in the id tag
}).siblings('Descriptor').text();

jQuery はそれを html として扱いますが、まったく同じように動作するようです。

フィドル

于 2012-05-09T23:26:54.907 に答える
1

この関数のようなものが動作するはずです:

function searchXmlForId(id) {
    var searchDescriptor = "";

    $.ajax({
        type: "GET",
        url: "your/xml/file.xml",
        dataType: "xml",
        success: function(xml) {
            $(xml).find('Category').each(function(){
                if (curId == $(this).find('Id').text()) return $(this).find('Descriptor').text();
            });   
        }
    });

    return false;
}

そして、次のように呼び出します。

var myDescriptorFromId = searchXmlForId(1);

>> "Accounts"
于 2012-05-09T23:26:41.450 に答える
1

人々はここで正規表現を提案するために私の喉を飛び越えようとしていますが、私はそれがおそらく最速の解決策であることに異議を唱えます(嫌いな人のために、私はここでxmlを解析していませんし、そうするつもりもありません-私は単にテキスト パターン):

var matches = xml.match(new RegExp('<Id>' + id + '<\\/Id>[\\s\\S]*?<Descriptor>(.*?)</Descriptor>', 'i'))
var description = matches ? matches[1] : null;
于 2012-05-09T23:26:58.747 に答える