2013-11-25 21 views
0

我有我使用Ajax讀取XML文件:讓產品從類別中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中的物品返回文本名稱?

+0

這真的是XML的結構? 「」和「」標籤應該放在「」標籤中嗎? –

+0

@JimGarrison是的,這絕對是它的結構。 – Sara44

回答

1

你必須找到myCatId節點值爲252,然後向後導航。在XPath,這將是

../preceding-sibling::text/name` 

鑑於怪異的XML佈局,這當然會失敗(返回錯誤值),如果有上述<cat><pId>節點之間沒有<text>節點。

編輯:我沒有使用jQuery太多的經驗,但是從文檔的快速閱讀,我認爲這將是這個樣子:

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

但請記住,這依賴於一個破碎的XML當它應該使用層次結構時使用鄰接來關聯實體的結構。如果你可以修復XML,你將會變得更好。

+0

好的謝謝。我是一個絕對的初學者,所以如何將這個添加到代碼示例中? – Sara44

+0

我已將最佳猜測添加到答案中。 –