【问题标题】:How do you parse with SAX using Attributes & Values to a URL path using iPhone SDK?如何使用 SAX 使用 Attributes & Values 解析到使用 iPhone SDK 的 URL 路径?
【发布时间】:2009-09-07 22:10:01
【问题描述】:

我正在尝试使用 SAX 进行解析,并认为 iPhone Dev Center 中的 TopSongs 示例是一个很好的起点。我得到了大部分,但是当涉及到节点内的属性和值时,我在任何地方都找不到一个好的例子。 XML 有一个指向封面艺术 URL 的路径。 XML 节点看起来像这样。

<itms:coverArt height="60" width="60">http://a1.phobos.apple.com/us/r1000/026/Music/aa/aa/27/mzi.pbxnbfvw.60x60-50.jpg</itms:coverArt>  

我为 startElement 尝试过的是这个……

 ((prefix != NULL && !strncmp((const char *)prefix, kName_Itms, kLength_Itms)) && 
        (!strncmp((const char *)localname, kName_CoverArt, kLength_Item) &&
         !strncmp((const char *)attributes, kAttributeName_CoverArt, kAttributeLength_CoverArt) &&
         !strncmp((const char *)attributes, kValueName_CoverArt, kValueLength_CoverArt) ||
         !strncmp((const char *)localname, kName_Artist, kLength_Artist) ||   

然后像这样在最后只使用本地名称再次拾取它。

if (!strncmp((const char *)localname, kName_CoverArt, kLength_CoverArt)) { importer.currentSong.coverArt = [NSURL URLWithString:importer.currentString];  

trace 是 -[Song setCoverArt:]: unrecognized selector sent to instance。

【问题讨论】:

    标签: iphone attributes saxparser


    【解决方案1】:

    听起来您还没有在Song 类中合成coverArt 属性(使用@synthesize 关键字)。这就是创建-[Song setCoverArt:] 方法的原因,当您在currentSong 上设置coverArt 属性时会调用该方法。

    【讨论】:

    • 感谢您的建议,它遵循与 Song 类中设置为 @dynamic 的其他节点相同的结构。但我认为你是对的,它没有正确添加到数据模型中。从那以后,我尝试只添加另一个没有属性的节点,它产生了相同的错误结果。
    • 我没有将新属性添加到引发错误的数据模型文件中。现在我没有得到错误,但我也没有得到数据。所以上面的结构一定是缺少了什么。
    • 我可以通过对节点的一次调用将数据作为字符串获取,但问题是不同图片大小的三个节点。所以我仍然需要知道如何联系其他人。
    • 好的,我越来越近了。我需要做一个 for 循环来收集正确的属性。现在的问题是处理 endelementSAX。即使其中 2 个没有数据,它仍在拾取所有三个条目。
    猜你喜欢
    • 2011-06-17
    • 2023-04-01
    • 2013-09-23
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    • 1970-01-01
    相关资源
    最近更新 更多