如何在Xml子元素中选择和每个元素?

时间:2017-02-07 08:59:15

标签: javascript jquery xml

我想在XML子元素上使用jQuery.each()方法。

以下是我的代码。

case class User (value1: Option[Role] = None, value2: Option[String] = None) extends Role

object User { 
implicit val jsonFormatter: Format[User] = Json.format[User]
}

但是这个功能显示了什么。 我想要和Xml元素一样多。 我该如何解决?

2 个答案:

答案 0 :(得分:2)

jQuery的find()仅适用于后代,您的<approvalcontent>元素是根元素,因此您想要的可能是filter()而不是

$(xml).filter("approvalcontent")...

然而,您应该在访问XML之前解析XML,因为这样可以为您提供实际有效的XML文档,您可以使用find()

function bindContent(xml) {
    var parsed = $.parseXML(xml);
    $(parsed).find("approvalcontent").children().each(function() {
        alert("here!");
    });
}

答案 1 :(得分:1)

只需使用$(xml).children()

即可

$(function() {
  var xml = "<approvalcontent><vac_applier>Name</vac_applier><vac_sdate>2017-02-03</vac_sdate><vac_edate>2017-02-10</vac_edate><vac_reason>kind</vac_reason></approvalcontent>";
  bindContent(xml);
});

function bindContent(xml) {
  $(xml).children().each(function() {
    console.log("here!");
  });
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

您需要使用.filter()代替.find(),因为approvalcontent位于顶层。

$(function() {
  var xml = "<approvalcontent><vac_applier>Name</vac_applier><vac_sdate>2017-02-03</vac_sdate><vac_edate>2017-02-10</vac_edate><vac_reason>kind</vac_reason></approvalcontent>";
  bindContent(xml);
});

function bindContent(xml) {
  $(xml).filter("approvalcontent").children().each(function() {
    alert("here!");
  });
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>