我有一个XML文件,我使用Ajax来阅读:
<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中的项目返回文本名称?
答案 0 :(得分:1)
您必须找到值为myCatId
的{{1}}个节点,然后向后导航。在XPath中,这将是
252
鉴于奇怪的XML布局,如果前面的../preceding-sibling::text/name`
和<text>
节点之间没有<cat>
节点,这当然会失败(返回错误的值)。
<pId>
但请记住,这取决于一个破坏的XML结构,该结构在应该使用层次结构时使用邻接来关联实体。如果您可以修复XML,那将会更好。