我有一个使用Ajax读取的XML文件:
<prod id="6786345">
<pId>0436</pId>
<text>
<name>Blue widget</name>
<desc>Stunning blue widget</desc>
</text>
<cat>
<myCatId>252</myCatId>
<myCat>Widgets</myCat>
</cat>
<pId>0437</pId>
<text>
<name>Red widget</name>
<desc>Amazing red widget</desc>
</text>
<cat>
<myCatId>252</myCatId>
<myCat>Widgets</myCat>
</cat>
<pId>0438</pId>
<text>
<name>Cheeseburger</name>
<desc>Healthy delight</desc>
</text>
<cat>
<myCatId>253</myCatId>
<myCat>Burgers</myCat>
</cat>
</prod>我的工作Ajax只提取名称而不属于某个类别,如下所示:
$(document).ready(function(){
$.ajax({
type: "GET",
url: "feed.xml",
dataType: "xml",
success: function(xml) {
$(xml).find('text').each(function(){
var title = $(this).children('name').text();如何仅返回类别252中的项目的文本名称?
发布于 2013-11-26 04:00:24
您必须找到值为252的myCatId节点,然后向后导航。在XPath中,这将是
../preceding-sibling::text/name`考虑到奇怪的XML布局,如果在前面的<cat>和<pId>节点之间没有<text>节点,这当然会失败(返回错误的值)。
编辑:我没有太多使用jQuery的经验,但快速阅读一下文档,我认为它应该是这样的:
var title = $(this).parent().prev("text").children("name").text();但请记住,这依赖于破坏的XML结构,该结构使用邻接关系来关联实体,而它本应使用层次结构。如果你能修复XML,你会过得更好。
https://stackoverflow.com/questions/20200303
复制相似问题