以下のXMLから、シーケンスの2番目の要素を取得しようとしています。終了ノードは各エントリの開始ノードと同じであることに注意してください。これにより、取得が少し難しくなります。
startElementSAX関数でforループを設定して、Width="60"属性を評価および取得しようとしました。これによりデータが正しく並べ替えられますが、ターゲットプロパティはシーケンスの最後のパスを受け取ります。ノードの属性を取得するには、最初にそれを検出する必要があるためだと思います。したがって、これも毎回送信されます。私はこれを発生から隔離する方法を見つけることができませんでした。
開始基準に関係なく、3つのパスすべてが毎回送信されることを確認するトレースを作成しました。それらを別のプロパティにアタッチできれば、これは問題にはなりません。
プロジェクト全体を見たい場合は、TopSongsと呼ばれるApple iPhoneDevCenterにあります。パスワードが必要な場合があります。
<itms:coverArt height="53" width="53">http://a1.phobos.apple.com/us/r1000/030/Music/7f/b0/f6/mzi.erhtxklr.53x53-50.jpg</itms:coverArt>
<itms:coverArt height="60" width="60">http://a1.phobos.apple.com/us/r1000/030/Music/7f/b0/f6/mzi.erhtxklr.60x60-50.jpg</itms:coverArt>
<itms:coverArt height="100" width="100">http://a1.phobos.apple.com/us/r1000/030/Music/7f/b0/f6/mzi.erhtxklr.100x100-75.jpg</itms:coverArt>
これは私がこれまでに持っているendElementコードです。
static void endElementSAX(void *parsingContext, const xmlChar *localname, const xmlChar *prefix, const xmlChar *URI) {
iTunesRSSImporter *importer = (iTunesRSSImporter *)parsingContext;
if (importer.parsingASong == NO) return;
} else if (!strncmp((const char *)prefix, kName_Itms, kLength_Itms)) {
if (!strncmp((const char *)localname, kName_CoverArt, kLength_CoverArt)) {
importer.currentSong.coverArt60 = importer.currentString;