我有下面的代碼獲取XML元素。第二行雖然不起作用。我認爲它與命名空間有關,但對於所有這些我都很新,所以我很感謝任何指導。謝謝!不能用冒號在名稱中使用TouchXML
事實證明,我可以使用elementsForLocalName:URI:
正確讀取元素。現在問題在於,因爲我使用的是TouchXML庫,所以似乎沒有將該方法映射到CXMLElement
結構(請參見here)。
所以現在的問題是:如何將CXMLElement
轉換爲NSXMLElement
以便我可以使用該方法?
我有下面的代碼獲取XML元素。第二行雖然不起作用。我認爲它與命名空間有關,但對於所有這些我都很新,所以我很感謝任何指導。謝謝!不能用冒號在名稱中使用TouchXML
事實證明,我可以使用elementsForLocalName:URI:
正確讀取元素。現在問題在於,因爲我使用的是TouchXML庫,所以似乎沒有將該方法映射到CXMLElement
結構(請參見here)。
所以現在的問題是:如何將CXMLElement
轉換爲NSXMLElement
以便我可以使用該方法?
「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"]
爲了回答第二問題,請參閱下面的評論。
感謝Porges,我認爲這是完全正確的。但現在還有另一個問題 - 請參閱我上面的編輯。 – 2010-07-09 00:41:55
它看起來像是,如果你可以得到XML文檔使用的實際前綴(所以無論'xmlns:____ =「http://www.itunes.com/dtds/podcast-1.0.dtd」'),你應該只能使用'elementsForName:@「____:duration」'。 – porges 2010-07-09 00:57:14
這也不起作用 - 這個_____是「itunes」。看起來我可能需要切換到另一個庫或以某種方式爲來自iTunes的XML提要創建一個重新格式化的代理。我感謝您的幫助Porges! – 2010-07-09 01:02:26
你看過調試器中節點的內容嗎?當你說不起作用,那麼這意味着持續時間是零還是你會得到一個例外? – falconcreek 2010-07-08 22:26:44