Javascript 读取循环中xml文件的所有节点
我有这样的xml文件Javascript 读取循环中xml文件的所有节点,javascript,Javascript,我有这样的xml文件 <bookstore> <book category="cooking"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00<
<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="web" cover="paperback">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
日常意大利语
吉娅达·德·劳伦蒂斯
2005
30
哈利·波特
J K.罗琳
2005
29.99
学习XML
埃里克·T·雷
2003
39.95
我想读取此xml的所有值。即,我需要所有节点的值。是否可以在不使用服务器端脚本语言的情况下读取所有节点的值。我用于读取xml的所有标题的代码如下所示
<script type="text/javascript">
function loadXMLDoc()
{
//var item = document.getElementById('search').value;
var request = new XMLHttpRequest();
var url = "http://saletrack.cynere.net/test2.xml";
request.open("GET",url, true);
request.send();
request.onreadystatechange = function() {
if (request.readyState == 4) {
if (request.status == 200 || request.status == 0) {
var myxml = request.responseXML;
var theHTML = '';
var x = myxml.getElementsByTagName("title");
for (var i = 0; i < x.length; i++) {
var y = x[i].childNodes[0].nodeValue;
theHTML += ['<div class="result"',
'<div ul="content">',
'<li><h3>'+y+'</h3></li>',
'</ul>',
'</div>'].join('');
}
}
}
document.getElementById('list').innerHTML = theHTML;
}
}
document.addEventListener("deviceready", loadXMLDoc, false);
</script>
函数loadXMLDoc()
{
//var item=document.getElementById('search')。值;
var request=new XMLHttpRequest();
变量url=”http://saletrack.cynere.net/test2.xml";
打开(“获取”,url,true);
request.send();
request.onreadystatechange=函数(){
if(request.readyState==4){
if(request.status==200 | | request.status==0){
var myxml=request.responseXML;
var theHTML='';
var x=myxml.getElementsByTagName(“标题”);
对于(变量i=0;i HTML+=['您可以使用jquery而不是核心javascript
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
//Code Starts
$(document).ready(function(){
$("#list").append("<ul></ul>");
$.ajax({
type: "GET",
url: "test2.xml",
//url: "test2.xml",
crossDomain: true,
dataType: "xml",
success: function(xml){
$(xml).find('book').each(function(){
var sTitle = $(this).find('title').text();
var author = $(this).find('author').text();
var year = $(this).find('year').text();
var price = $(this).find('price').text();
$("<li></li>").html(sTitle + ", " + author + ", " + year + ", " + price ).appendTo("#list ul");
});
},
error: (function(xhr, ajaxOptions, thrownError) {
///show error message ie. "Status Code: ("+xhr.status+")<br>Description: "+xhr.statusText
alert("An error occurred while processing XML file. Status Code: ("+xhr.status+")<br>Description: "+xhr.statusText );
})
});
});
</script>
//代码开始
$(文档).ready(函数(){
$(“#列表”)。追加(“
”);
$.ajax({
键入:“获取”,
url:“test2.xml”,
//url:“test2.xml”,
跨域:是的,
数据类型:“xml”,
成功:函数(xml){
$(xml).find('book').each(函数(){
var sTitle=$(this.find('title').text();
var author=$(this.find('author').text();
var year=$(this.find('year').text();
var price=$(this.find('price').text();
$(“”)html(sTitle+”、“+author+”、“+year+”、“+price”)。附录(“#列表ul”);
});
},
错误:(函数(xhr、ajaxOptions、thrownError){
///显示错误消息,即“状态代码:(“+xhr.Status+”)
说明:“+xhr.statusText”
警报(“处理XML文件时出错。状态代码:(“+xhr.Status+”)
说明:“+xhr.statusText”);
})
});
});
Html代码:
<body>
<div id="list"></div>
</body>
输出为:
- 《每日意大利语》,Giada De Laurentiis,2005年,30.00
- 哈利波特,J K.罗琳,2005年,29.99
- XQuery Kick Start,James McGovernPer BothnerKurt CagleJames LinnVaidyanathan Nagarajan,2003,49.99
- 学习XML,Erik T.Ray,2003,39.95