我在jQuery上解析XML时遇到问题。我有像这样的XML文件
<field name="scheduleItems">
<value>
<field name="programID">364</field>
<field name="programTime">05:00</field>
<field name="programTimeEnd">05:30</field>
<value>
</field>
这是我使用ajax解析时的代码
$.ajax({
type: "GET",
url: xmlFeed,
dataType: "xml",
success: function(xml) {
$(xml).find("field[name*='scheduleItems']").each(function(i, obj){
$(xml).find("value").each(function(i, obj){
var programTime = $(this).children("field[name*='programTime']").text();
var programTimeEnd = $(this).children("field[name*='programTimeEnd']").text();
});
});
},
error: function() {
console.log("has error!");
}
});
打印 programTime 的结果时。 programTimeEnd 会像这样追加&gt;&gt;的&#34; programTime&#34;:&#34; 05:0005:30&#34;
我能解决吗?谢谢大家。
答案 0 :(得分:0)
您使用*=
表示“包含”,“programTimeEnd”包含“programTime”。使用=
表示“等于”。
var parser = new DOMParser();
var xml = parser.parseFromString(
'<field name="scheduleItems">'+
' <value>'+
' <field name="programID">364</field>'+
' <field name="programTime">05:00</field>'+
' <field name="programTimeEnd">05:30</field>'+
'</value>'+
'</field>',
'application/xml'
);
var output = document.getElementById('output');
$(xml).find('field[name="scheduleItems"]').each(
function(i, obj){
$(this).find("value").each(
function(i, obj){
var programTime = $(this).children('field[name="programTime"]').text();
var programTimeEnd = $(this).children('field[name="programTimeEnd"]').text();
output.appendChild(
document.createTextNode(
programTime + ' - ' + programTimeEnd
)
);
output.appendChild(document.createElement('br'));
}
);
}
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<pre id="output"></pre>
注意:您的XML没有命名空间,这是一件好事,因为jQuery不支持XML命名空间。