jQuery XML PARSE

时间:2012-12-29 08:42:01

标签: jquery xml

假设我有一个xml .." xml2.xml"

<aurora>
<event> abc </event>
<event> abc </event>
<event> abc </event>
<event> 
<subeve> def </subeve>
<subeve> def </subeve>
<subeve> def </subeve>
</event>
<event> 
<subeve> def </subeve>
<subeve> def </subeve>
<subeve> def </subeve>
</event>
</aurora>

还有一个jquery代码..

<script>
$(document).ready(function () {
    $.ajax({
        type: "GET",
        url: "xml2.xml",
        dataType: "xml",
        success: xmlParser
    });
});
function xmlParser(xml) {
    $(xml).find("event").each(function () {

        $(".slides").append('<b>1');

        $(this).find("subeve").each(function () {
        $(".slides").append('<i>2</i>');
        });
        $(".slides").append('</b>');

    });
}
</script>


输出为:<b>1111</b><i>222</i><b>1</b><i>222</i>

但我希望输出为......:<b>1111<i>222</i>1<i>222</i></b>

我怎么能这样做???

我的第二个问题..我的第一个问题真的很傻吗? : - &LT;

2 个答案:

答案 0 :(得分:3)

你在考虑标记(<b>然后是</b>),但是一旦你处理了DOM元素,你就会处理对象,而不是标记。具体来说,当您执行$(".slides").append("<b>");时,创建一个b元素并将其附加到slides。它不会“打开”<b>标记。然后,当您稍后执行$(".slides").append("<i>2</i>");时,它会创建一个i元素并将其附加到幻灯片, b元素之后,而不在其中。我不知道jQuery对.append("</b>")做了什么,不要这样做。 : - )

您可以构建元素并随意附加元素(将i元素附加到每个b,并将b附加到.slides),或者构建标记字符串,并在完成后将其附加到.slides

构建元素的第一个选项可能如下所示:

function xmlParser(xml) {
  var slides = $(".slides");

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

    var b = $("<b>").text("1");

    $(this).find("subeve").each(function () {
      b.append('<i>2</i>');
    });

    slides.append(b);
  });
}

Live Example | Source

构建标记的第二个选项可能如下所示:

function xmlParser(xml) {
  var markup = [];

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

    markup.push('<b>1');

    $(this).find("subeve").each(function () {
      markup.push('<i>2</i>');
    });

    markup.push('</b>');
  });

  $(".slides").append(markup.join(""));
}

Live Example | Source

答案 1 :(得分:-1)

如果您只想让所有内容以粗体显示,请使用CSS:

.slides{

    font-weight:bold;

} 

如果您想将HTML标记用于某些不同的目的,我强烈建议您使用某种形式的模板,而不是使用jQuery创建原始HTML。