使用JQuery解析XML,需要按属性名称查找

时间:2011-03-10 11:40:00

标签: jquery html xml

我正在尝试解析一些XML数据以显示在基本网页中。 XML如下:

    <response> 
  <variable name = "Input1">False</variable> 
  <variable name = "Input2">False</variable> 
  <variable name = "Input3">False</variable> 
  <variable name = "Input4">False</variable> 
  <variable name = "Input5">False</variable> 
  <variable name = "Input6">False</variable> 
  <variable name = "Input7">False</variable> 
  <variable name = "Input8">False</variable> 
</response> 

我有一些显示的代码,但目前我在1个文本区域显示所有8个变量。

        $(document).ready(function()
        {
          $.ajax({
            type: "GET",
            //To change controller, please chnage the IP below.
            url: "http://172.20.2.17/query/variable?Input1&Input2&Input3&Input4&Input5&Input6&Input7&Input8",
            dataType: "xml",
            success: parseSystem

          });
        })      
        //Parse System XML Response 
        function parseSystem(xml)
{

  $(xml).find("response").each(function()
   {    

        $("#Input1").append($(this).find("variable").text())
    $("#Input2").append($(this).find("variable").text())
    $("#Input3").append($(this).find("variable").text())
    $("#Input4").append($(this).find("variable").text())
    $("#Input5").append($(this).find("variable").text())
    $("#Input6").append($(this).find("variable").text())
    $("#Input7").append($(this).find("variable").text())
    $("#Input8").append($(this).find("variable").text())
   });

我希望XML中的Input1链接到HTML中的#Input1,等等。

感谢您的时间,真的很感激。

2 个答案:

答案 0 :(得分:3)

$(xml).find("response").each(function()
   {    

    $("#Input1").append($(this).find("variable[name=Input1]").text())
    $("#Input2").append($(this).find("variable[name=Input2]").text())
    $("#Input3").append($(this).find("variable[name=Input3]").text())
    $("#Input4").append($(this).find("variable[name=Input4]").text())
    $("#Input5").append($(this).find("variable[name=Input5]").text())
    $("#Input6").append($(this).find("variable[name=Input6]").text())
    $("#Input7").append($(this).find("variable[name=Input7]").text())
    $("#Input8").append($(this).find("variable[name=Input8]").text())
   });

但是有一个更灵活的功能:

$(xml).find("response").each(function(){
     $(this).find("variable").each(function(){
          var id = $(this).attr("name");
          $("#"+id).append($(this).text())
     });
});

答案 1 :(得分:0)

$(xml).find('response').each(function (index, element) {
    var $element = $(element);
    var $variables = $('variable', $element);
    $variables.each(function (index, variable) {
        var $variable = $(variable);
        var controlId = $variable.attr('name');
        var text = $variable.text();
        var $control = $('#' + controlId);
        $control.append(text);
    });
});