如何查找命名空间XML避免jQuery中的其他名称
问题描述:
我在解析jQuery上的XML时遇到问题。我有这样如何查找命名空间XML避免jQuery中的其他名称
<field name="scheduleItems">
<value>
<field name="programID">364</field>
<field name="programTime">05:00</field>
<field name="programTimeEnd">05:30</field>
<value>
</field>
XML文件,这是我的代码时使用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将追加像这样>>“programTime”: “05:0005:30”
我能解决这个问题。谢谢大家。
答
您使用*=
表示“包含”,“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命名空间的支持。