我甚至不知道这个问题的标题是否合适,因为我真的迷失了方向,需要一些建议,这是我需要完成的一个起点。
我的iPhone应用程序播放来自互联网的音频,我的定制播放器。一些链接是来自Akamai的实时流,还有一些是存储在网站上的音频文件。我对实时流没有意见,但我的问题是音频文件。
由于我有许多存储的音频文件,用户可以选择使用不同的语言,而且我不想在我的application.Then上硬编码所有这些文件,我需要一个聪明的方法让用户在应用程序上浏览(将信息从互联网上推送),直到他到达想要播放的文件。
该网站的组织方式如下:
首先是列表,有所有可用的程序。用户选择所需的程序,然后出现另一个页面,他必须选择一周中的一天来播放。
我的问题是:我如何分析这些内容,并从中选择程序和一周中的几天?我应该研究HTML解析吗?有没有更好/更简单的方法,比如在网站上创建XML文件?
如果这有帮助,那么所有的网页都以.aspx扩展结束。
请,任何建议,从一个更有经验的程序员将极大地帮助我。谢谢!
发布于 2011-11-12 06:58:43
我不认为解析HTML是最好的实现。选择一个结构化的源,它没有可查看的标记来担心解析出来或完全忽略(也意味着解析标记时抛出的资源会减少,因为您只需要解析重要的内容)。
我建议使用可以转换为NSDictionary或其他数据结构以供应用程序使用的XML或JSON源。下面是一个整洁的小类,它将XML源转换为NSDictionary:http://troybrant.net/blog/2010/09/simple-xml-to-nsdictionary-converter/
TBXML是另一个目标-c的轻量级XML解析器,它使自定义数据对象的实现取决于您:http://www.tbxml.co.uk/。
如果您更愿意使用JSON,那么就会有很多帮手。一个开始寻找的好地方就在这里:http://cocoaobjects.com/?s=json
如果我正确地理解了您的问题,无论您选择哪种来源,您都可能希望得到一个类似于以下内容的字典对象:
programs = (
{
program_name: "Foo";
tracks = (
{ day: Monday;
track: audio_file1.mp3;
},
{ day: Tuesday;
track: audio_file2.mp3;
},
{ day: Wednesday;
track: audio_file3.mp3;
}
);
},
{
program_name: "Bar";
tracks = (
{ day: Monday;
track: audio_file4.mp3;
},
{ day: Tuesday;
track: audio_file5.mp3;
},
{ day: Wednesday;
track: audio_file6.mp3;
}
);
},
{
program_name: "Baz";
tracks = (
{ day: Monday;
track: audio_file7.mp3;
},
{ day: Tuesday;
track: audio_file8.mp3;
},
{ day: Wednesday;
track: audio_file9.mp3;
}
);
};
);
一旦您计算出数据源,并将其转换为在object中使用的本地数据对象,您应该能够继续编写一个UI,该UI可以在字典中进行迭代,提供一个程序列表,并依次列出每个程序的天数列表,以及要选择播放的音频文件。
发布于 2011-11-13 06:30:46
发布于 2011-11-09 23:04:50
如果网站内容是静态的,我会硬编码文件名和适当的URL到您的服务器在应用程序中,让用户滚动通过列表的可用项目。
如果网站内容发生变化,那么我将在服务器上创建一个XML文件,您的应用程序在启动时下载(或您认为合适的话)并在应用程序中进行解析,然后按照静态内容继续。
希望这能让你朝正确的方向发展。
https://stackoverflow.com/questions/8014263
复制相似问题