提问人:ReA 提问时间:8/7/2023 最后编辑:ReA 更新时间:8/7/2023 访问量:22
通过jQuery读取XML文件时出现问题
problem with reading an xml file by jquery
问:
我想使用 JQuery 读取 xml 文件。除了读取 XML 文件中 linke 元素的文本部分外,代码几乎正在做我想要的事情。我的代码片段如下所示:
HTML 文件:
<!DOCTYPE html>
<html lang="en">
<meta name="viewport" content="width=device-width, initial-scale=1"; charset="UTF-8">
<head><title>Reading XML File Using jQuery AJAX Method</title>
</head>
<body>
<h2> How To Read XML Data - 2 </h2>
<div class='timeline'>
<ul></ul>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"> </script>
<script src="raReadXMLByJquery-2.js" type="text/javascript"></script>
</body>
</html>
名为 raReadXMLByJQuery-2.xml 的 xml 文件:
< ?xml version="1.0" ?>
<statuses>
<status id='555'>
<id> 123</id>
<text>This is text 1</text>
<link> http://google.com </link>
<link> http://google.co.uk </link>
<user>
<name> Jack </name>
</user>
</status>
<status id='666'>
<id> 456 </id>
<text>This is text 2</text>
<link> http://google.com </link>
<link> http://google.co.uk </link>
<user>
<name> Sara </name>
</user>
</status>
</statuses>
名为 raReadXMLByJquery-2.js 的 javascript 文件:
$(document).ready( function() { //11
$.ajax({ //22
url: 'raReadXMLByJQuery-2.xml',
//dataType: 'xml', //this line is not working
dataType: 'text',
success: function (data){ //44
$(data).find('status').each ( function() { //55
var status = $(this).find('text').text();
var id = $(this).attr('id');
var user = $(this).find('user name').text();
var link = $(this).find('link').text();
alert (link);
$('.timeline ul').append ( //66
$('<li />', { //77
text: '(' + id + ') ' + status + ' - ' + user + ' - ' + link //9999
}) //77
); //66
}); //55
}, //44
error: function(){ //33
$('.timeline').text('There was an error baby!');
} //33
}); //22
}); //11
每个部分都在执行其功能,除了警报,它不输出任何内容,因此在代码行中由 //9999 标识的链接 elemet 的文本部分 为什么会这样?
这似乎很简单,但我没有找到 issu。
答:
2赞
Rory McCrossan
8/7/2023
#1
问题是因为是保留节点名称。将其更改为其他内容,例如 ,您的代码可以正常工作:<link />
url
const data = `<?xml version="1.0"?><statuses><status id='555'><id> 123</id><text>This is text 1</text><url> http://google.com </url><url> http://google.co.uk </url><user><name> Jack </name></user></status><status id='666'><id> 456 </id><text>This is text 2</text><url> http://google.com </url><url> http://google.co.uk </url><user><name>Sara</name></user></status></statuses>`
$(data).find('status').each(function() {
var status = $(this).find('text').text();
var id = $(this).attr('id');
var user = $(this).find('user name').text();
var link = $(this).find('url').text();
$('.timeline ul').append(
$('<li />', {
text: '(' + id + ') ' + status + ' - ' + user + ' - ' + link
})
);
});
<div class='timeline'>
<ul></ul>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js">
</script>
评论