【问题标题】:NSXMLParser. How to parse KVC-plist-thingamajig-like XML?NSXML 解析器。如何解析类似 KVC-plist-thingamajig 的 XML?
【发布时间】:2010-07-24 10:21:40
【问题描述】:

所以,基本上我想从 iTunes Library.xml 制作对象“歌曲” 问题是 XML 文件看起来更像 .plist 这是一个例子:

<key>56</key>
    <dict>
        <key>Track ID</key><integer>56</integer>
        <key>Name</key><string>apple-ipad-video</string>
        <key>Kind</key><string>QuickTime Movie</string>
        <key>Size</key><integer>99552974</integer>
        <key>Total Time</key><integer>440607</integer>
        <key>Date Modified</key><date>2010-05-13T19:55:21Z</date>
        <key>Date Added</key><date>2010-07-22T05:40:11Z</date>
        <key>Bit Rate</key><integer>123</integer>
        <key>Artwork Count</key><integer>1</integer>
        <key>Persistent ID</key><string>EEC08DC8DE950DF9</string>
        <key>Track Type</key><string>File</string>
        <key>Has Video</key><true/>
        <key>HD</key><false/>
        <key>Video Width</key><integer>848</integer>
        <key>Video Height</key><integer>480</integer>
        <key>Movie</key><true/>
        <key>Location</key><string>file://localhost/Users/User/Music/iTunes1/iTunes%20Media/Movies/apple-ipad-video-geo-alt1-ru-20100406_848x480/apple-ipad-video-geo-alt1-ru-20100406_848x480.mov</string>
        <key>File Folder Count</key><integer>4</integer>
        <key>Library Folder Count</key><integer>1</integer>
    </dict>
    <key>58</key>

当所有元素都相同时如何解析它? 我需要在输出中看起来像这样的对象:

@interface Song : NSObject {
    NSInteger *trackID;
    NSString *name;
    NSString *kind;
    NSInteger *size;
    ...
}

有人有想法吗? 提前致谢。

【问题讨论】:

    标签: iphone xml nsxmlparser


    【解决方案1】:

    将其作为 plist 读取,然后从中提取您需要的数据。

    Song *mySong = [[Song alloc]init];
    NSString *filename = @"/path/to/the/file.xml";
    NSDictionary *plist = [NSDictionary dictionaryWithContentsOfFile:filename];
    
    NSLog(@"Read in plist file: %@", plist);
    
    [mySong setTrackID: [plist valueForKey:@"Track ID"]];
    

    【讨论】:

    • 我认为它适用于一首歌曲。但是这个 xml 中有数千首歌曲,如果它们具有相同的键,我能否从单个 plist 中制作所有歌曲对象?我是编码新手,是的:)
    • @Yuri: NSArray 也有一个arrayWithContentsOfFile: 方法。您只需要一个以&lt;array&gt; 作为其根元素的有效 plist。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    相关资源
    最近更新 更多