2010-07-08 40 views
1

我有下面的代碼獲取XML元素。第二行雖然不起作用。我認爲它與命名空間有關,但對於所有這些我都很新,所以我很感謝任何指導。謝謝!不能用冒號在名稱中使用TouchXML


事實證明,我可以使用elementsForLocalName:URI:正確讀取元素。現在問題在於,因爲我使用的是TouchXML庫,所以似乎沒有將該方法映射到CXMLElement結構(請參見here)。

所以現在的問題是:如何將CXMLElement轉換爲NSXMLElement以便我可以使用該方法?

+0

你看過調試器中節點的內容嗎?當你說不起作用,那麼這意味着持續時間是零還是你會得到一個例外? – falconcreek 2010-07-08 22:26:44

回答

2

「itunes」是命名空間標識符。它本身並沒有任何意義,它只是將URI與所討論的元素鏈接起來。看起來您正在使用位於命名空間http://www.itunes.com/dtds/podcast-1.0.dtd下的iTunes RSS擴展。

因此,對於命名空間的元素,我認爲(我不熟悉的Objective-C或NSXML:P)要使用elementsForLocalName代替:

[node elementsForLocalName: @"duration" URI: @"http://www.itunes.com/dtds/podcast-1.0.dtd"] 

爲了回答第二問題,請參閱下面的評論。

+0

感謝Porges,我認爲這是完全正確的。但現在還有另一個問題 - 請參閱我上面的編輯。 – 2010-07-09 00:41:55

+0

它看起來像是,如果你可以得到XML文檔使用的實際前綴(所以無論'xmlns:____ =「http://www.itunes.com/dtds/podcast-1.0.dtd」'),你應該只能使用'elementsForName:@「____:duration」'。 – porges 2010-07-09 00:57:14

+0

這也不起作用 - 這個_____是「itunes」。看起來我可能需要切換到另一個庫或以某種方式爲來自iTunes的XML提要創建一個重新格式化的代理。我感謝您的幫助Porges! – 2010-07-09 01:02:26

相關問題