从XML中获取类别的产品

时间:2013-11-25 18:18:46

标签: ajax xml

我有一个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中的项目返回文本名称?

1 个答案:

答案 0 :(得分:1)

您必须找到值为myCatId的{​​{1}}个节点,然后向后导航。在XPath中,这将是

252

鉴于奇怪的XML布局,如果前面的../preceding-sibling::text/name` <text>节点之间没有<cat>节点,这当然会失败(返回错误的值)。

编辑:我对jQuery没有多少经验,但是从快速阅读文档开始,我认为它看起来像这样:

<pId>

但请记住,这取决于一个破坏的XML结构,该结构在应该使用层次结构时使用邻接来关联实体。如果您可以修复XML,那将会更好。