我有一个XML文件如下。如何使用Jquery读取所有元素。请注意,我在处理文件时不知道子元素名称
<Skills> <Programming>Yes</Programming> <Networking>No</Networking> <ProjectMangement>Yes</ProjectMangement> </Skills> $.ajax({ url: 'application_form.xml', dataType: "xml", success: parse, error: function(){alert("Error: Something went wrong");} }); function parse(document){ $(document).find("Skills").each(function(i,e){ //here i want to get the name of all the child elements }); }
答案 0 :(得分:1)
这对我来说很好:
var data = "<Skills><Programming>Yes</Programming><Networking>No</Networking><ProjectMangement>Yes</ProjectMangement></Skills>"
$(data).children();
这为您提供了一个jQuery元素数组。
然后,您可以使用.nodeName
获取代码的名称:
$(data).children()[0].tagName; // => "PROGRAMMING"
答案 1 :(得分:0)
使用此代码并根据您的要求进行编辑:
var xmlString = "<route><name>Lakeway</name><abrv>LAKE</abrv><eta><time>00:30</time> <dest>MAIN</dest></eta></route>",
xmlDoc = $.parseXML( xmlString ),
$xml = $( xmlDoc ),
$abrv = $xml.find( "abrv" ).text() == "LAKE" ? $xml.find( "abrv" ) : false;
var time = $abrv.next().children("time").text();
var dest = $abrv.next().children("dest").text();
alert(time + " " + dest);
答案 2 :(得分:0)
您可以选择根节点,然后遍历子集合。如果您期待更多级别的孩子,那么递归地进行
$.fn.iterateChildren = function(fun){
this.each(function(){
if(fun(this)){
this.iterateChildren(fun);
}
});
}
您可以选择根并调用该功能
$(document).find("Skills").iterateChildren(function(){
//do some stuff
//return true if you wish to keep iterating the siblings of the current node
//return false if you wish to end the iteration (equivalent to break in a for loop
});
我已将它简化为$的扩展,因为它是节点操作/遍历。如果它是你在项目中经常使用的东西,我宁愿用其余的操作/遍历逻辑即jQuery找到它。 (扩展jQuery有问题,比如namecollisions)
答案 3 :(得分:0)
使用下面的粗体代码来解析XML的每个子元素
函数解析(文档){ (文档)$ .find( “技能”)。每个(函数(I,E){
//here i want to get the name of all the child elements
**$(this).children().each(function () {
alert($(this).text());
});**
});