如何使用$()。find()深度超过2的循环循环jQuery分析

时间:2019-02-06 21:00:35

标签: jquery xml loops parsing find

我正在尝试解析XML数据。而且成功了,它奏效了。但是,结果非常复杂,因为循环无法正常工作。

我的问题是我不知道如何在特定标签中循环。例如,

<item>  
    <word>aaa</word>
    <sup_no>0</sup_no>
    <pos>nnn</pos>
    <sense>
        <sense_order>1</sense_order>
        <definition>xxx</definition>            
        <translation>
            <trans_lang>xxx</trans_lang>
            <trans_word>xxx</trans_word>
            <trans_dfn>xxx</trans_dfn>
        </translation>
    </sense>
    <sense>
        <sense_order>2</sense_order>
        <definition>yyy</definition>            
        <translation>
            <trans_lang>yyy</trans_lang>
            <trans_word>yyy</trans_word>
            <trans_dfn>yyy</trans_dfn>
        </translation>
    </sense>
</item>
<item>
    <word>aaa</word>
    <sup_no>0</sup_no>
    <pos>nnn</pos>
    <sense>
        <sense_order>1</sense_order>
        <definition>xxx</definition>            
        <translation>
            <trans_lang>xxx</trans_lang>
            <trans_word>xxx</trans_word>
            <trans_dfn>xxx</trans_dfn>
        </translation>
    </sense>
    <sense>
        <sense_order>2</sense_order>
        <definition>yyy</definition>            
        <translation>
            <trans_lang>yyy</trans_lang>
            <trans_word>yyy</trans_word>
            <trans_dfn>yyy</trans_dfn>
        </translation>
    </sense>
    <sense>
        <sense_order>3</sense_order>
        <definition>zzz</definition>            
        <translation>
            <trans_lang>zzz</trans_lang>
            <trans_word>zzz</trans_word>
            <trans_dfn>zzz</trans_dfn>
        </translation>
    </sense>
</item>

我将$().each(function(){});用于item。但是,我使用$().find().text()来获取数据。就是这样。我不知道如何在一个特定的内部循环。如果需要的话,就像双循环甚至三重循环。

我的JavaScript代码是:

                $(obj).each(function(){
            result += ($(this).find("word").text()
            +"<span class='pos'>("+$(this).find("pos").text()+")</span> "
            +"<span>"+$(this).find("sense_order").text()+"</span> "
            +"<span>"+$(this).find("trans_word").text()+"</span>"
            +"<div>"+$(this).find("trans_dfn").text()+"</div><br>");
                });

它只是以一种方式打印(从上到下)。您能解释一下它对我的作用吗?

1 个答案:

答案 0 :(得分:1)

只需对嵌套元素使用另一个each循环。

$(obj).each(function(){

  var senseResult = "";

  $(this).find("sense").each(function(){
    senseResult += "<div><span>"+$(this).find("sense_order").text()+"</span> "
                +"<span>"+$(this).find("trans_word").text()+"</span>"
                +"<div>"+$(this).find("trans_dfn").text()+"</div></div>";
  });

  result += $(this).find("word").text()
         +"<span class='pos'>("+$(this).find("pos").text()+")</span>"
         + senseResult
         + "<br/>";

});