Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax 从XML中的类别获取产品_Ajax_Xml - Fatal编程技术网

Ajax 从XML中的类别获取产品

Ajax 从XML中的类别获取产品,ajax,xml,Ajax,Xml,我有一个使用Ajax读取的XML文件: <prod id="6786345"> <pId>0436</pId> <text> <name>Blue widget</name> <desc>Stunning blue widget</desc> </text> <cat> <myCatId>

我有一个使用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>

如何仅返回类别252中项目的文本名称?

您必须找到值为
252
myCatId
节点,然后向后导航。在XPath中,这将是

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

编辑:我对jQuery没有太多的经验,但是从文档的快速阅读来看,我认为它应该是这样的:

var title = $(this).parent().prev("text").children("name").text();

但请记住,这取决于一个不完整的XML结构,当它应该使用层次结构时,它使用邻接关系来关联实体。如果您能修复XML,您的境况会好得多。

XML真的是这样构造的吗?
标记是否应该在
标记中?@JimGarrison是的,这就是它的结构。好的,谢谢。我是这方面的绝对初学者,那么我该如何将其添加到代码示例中呢?我已经在答案中添加了我的最佳猜测。
var title = $(this).parent().prev("text").children("name").text();