提问人:Ed S. 提问时间:11/13/2023 更新时间:11/13/2023 访问量:13
无法从 jquery 中的 XML 元素中检索属性值
Can't retrieve attribute value from an XML element in jquery
问:
我有如下所示的xml:
<marker>
<name>Ada County Jail</name>
<adr>Boise</adr>
<state>Idaho</state>
<geo>43.6073458, -116.2698884</geo>
<tag>County</tag>
<ice>t</ice>
<url title="Ada County Jail">https://adacounty.id.gov/sheriff/ada-county-jail/</url>
<url title="Inmates">https://apps.adacounty.id.gov/sheriff/reports/inmates.aspx</url>
</marker>
我正在使用jquery。我在这里拉出 URL 元素:
function parseXml(xml)
{
$(xml).find("marker").each(function()
{
var url = $(this).find('url').map(function(i,v){return ($(v).text());}).get();
...
我正在尝试提取 url 元素的 title 属性的文本,以便 HTML 链接如下所示:
Link: Ada County Jail
Link: Inmates
此代码失败,并显示无法识别的表达式消息:
for (i=0;i<url.length;i++){
var web = url[i];
var y = $(xml).find(url[1]).attr("title");
html += '<a href="' + web + '">Link: ' + y + '</a>';
}
这是我第一次尝试访问属性。帮助。
答:
0赞
James Hibbard
11/13/2023
#1
若要从元素中提取属性,可以按如下方式修改代码:title
url
$xml.find("marker").each(function() {
$(this).find('url').each(function() {
const url = $(this).text();
const title = $(this).attr('title');
$('#links').append(`<a href="${url}">Link: ${title}</a><br>`);
});
});
下面是可以在计算机上运行的工作示例:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>XML Parsing Test</title>
</head>
<body>
<div id="links"></div>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
const xmlString = `
<marker>
<name>Ada County Jail</name>
<adr>Boise</adr>
<state>Idaho</state>
<geo>43.6073458, -116.2698884</geo>
<tag>County</tag>
<ice>t</ice>
<url title="Ada County Jail">https://adacounty.id.gov/sheriff/ada-county-jail/</url>
<url title="Inmates">https://apps.adacounty.id.gov/sheriff/reports/inmates.aspx</url>
</marker>
`;
const xml = $.parseXML(xmlString);
const $xml = $(xml);
$xml.find("marker").each(function() {
$(this).find('url').each(function() {
const url = $(this).text();
const title = $(this).attr('title');
$('#links').append(`<a href="${url}">Link: ${title}</a><br>`);
});
});
</script>
</body>
</html>
如果这不能解决您的问题,或者有任何不清楚的地方,请在评论中告诉我,我会修改我的答案。
评论