使用Jquery查找XML元素值
我有一个XML文件,需要使用Jquery和Ajax查找特定PK的项 到目前为止,我了解了对象,但我有两个问题:使用Jquery查找XML元素值,jquery,xml,ajax,Jquery,Xml,Ajax,我有一个XML文件,需要使用Jquery和Ajax查找特定PK的项 到目前为止,我了解了对象,但我有两个问题: 有没有比循环找到pk值更好的方法 XML很大,我需要知道是否有比将其加载到内存更好的查询方法,XSLT是否有更好的帮助?还是说还有比jquery更好的方法 这是我的密码 $.ajax({ url: 'xml/products.xml', dataType: 'html', success: function(xml) { $(xml).find(
$.ajax({
url: 'xml/products.xml',
dataType: 'html',
success: function(xml) {
$(xml).find('pk').each(function() {
if ($(this).text() == "1")
//do something
});
}
});
这是我的xml
<products>
<item>
<pk>1</pk>
<name>test</name>
</item>
<item>
<pk>2</pk>
<name>test2</name>
</item>
<item>
<pk>3</pk>
<name>test3</name>
</item>
<item>
<pk>4</pk>
<name>test4</name>
</item>
</products>
1.
测试
2.
测试2
3.
测试3
4.
测试4
至少,您可以使用比“pk”更具体的查询。在本例中,$(xml).find(“products item pk”)
应该更快。首先,您必须编写正确的xml字符串,就像您必须完成/结束上一个启动的相同标记一样。在上面的示例代码中,您在关闭时犯了错误。这是错误的xml语法。请更正如下:
1.
测试
在这里,我使用示例bin来解析XML数据或标记,而不是Ajax,我只是在按钮单击事件上解析XML数据,因为在bin上Ajax调用不可能调用外部文件
这里是演示:
HTML
<div>
<input type="button" id="btnxml" value="Get XML Data" />
<input type="button" id="btnreset" value="Reset" style="display:inline"/>
<div id="result">
</div>
</div>
<div id="xmldata">
<products>
<item>
<pk>
1
</pk>
<name>
test
</name>
</item>
<item>
<pk>
2
</pk>
<name>
test2
</name>
</item>
<item>
<pk>
3
</pk>
<name>
test3
</name>
</item>
<item>
<pk>
4
</pk>
<name>
test4
</name>
</item>
</products>
</div>
演示:我不确定为什么我觉得这个答案很好,但远远不是我想要的…我有外部xml文件,所以我确实需要单击ajax调用…我的问题是如何通过idHi获取特定节点,我修改了BIN和必要的更改,以便通过xml数据中的特定节点id查找Pk项。请点击下面的链接并检查它是否对您有用@gaurang171如果我们有多个标记名,如何获得这些标记的值?例如,如何获取每个的内部字符串值?id 1名称水果类别美国水果类别Yicon somsite.com/categories/1.jpg美国国家/地区
$(function() {
$("#btnxml").click(function() {
var xml = "<rss version='2.0'>";
xml += $("#xmldata").html();
xml += "</rss>";
var xmlDoc = $.parseXML(xml),
$xml = $(xmlDoc);
var result = "";
if ($xml.find("item").length > 0) {
result = "<table class='items'>";
result += "<tr><th>PK</th><th>Name</th></tr>";
$xml.find("item").each(function() {
result += "<tr>";
result += "<td>" + $(this).find("pk").text() + "</td>";
result += "<td>" + $(this).find("name").text() + "</td>";
result += "</tr>";
});
result += "</table>";
$("#result").html(result);
}
});
//Reset Result
$("#btnreset").click(function() {
$("#result").html("");
});
});
#xmldata{
display:none;
}
table.items{
margin-top:5px;
border:1px solid #6655a8;
background:#55a5d9;
width:20%;
}
table.items th{
border-bottom:1px solid #6655a8;
}
table.items td{
text-align:center;
}
input[type=button]{
border:1px solid #a588d9;
background:#b788d9;
}