最近在做这么一个功能, 就是现在各大视频网站都有的,手机视频软件里的视频投放到在同一 WiFi 下智能电视上进行播放。
DLNA 的全称是 DIGITAL LIVING NETWORK ALLIANCE(数字生活网络联盟), 其宗旨是 Enjoy your music, photos and videos, anywhere anytime, DLNA(Digital Living Network Alliance) 由 索尼 、 英特尔 、 微软 等发起成立、旨在解决个人 PC,消费电器,移动设备在内的 无线网络 和 有线网络 的互联互通,使得数字媒体和内容服务的无限制的共享和增长成为可能,目前成员公司已达 280 多家。 DLNA 并不是创造技术,而是形成一种解决的方案,一种大家可以遵守的规范。所以,其选择的各种技术和协议都是当前所应用很广泛的技术和协议。 DLNA 将其整个应用规定成 5 个功能组件。从下到上依次为:网络互连, 网络协议 ,媒体传输,设备的发现控制和管理,媒体格式。
通过我们自己的底层库,可以获取到相应设备的 Location。但是,这个 location 是一个 XML 文件。 那么,我们接下来就说说,解析这个 XML 过程中的随记。
我看了很多的技术帖子讲解在 iOS 解析 XML 的方式。主要的就是两种,一种是 iOS 系统自带的解析类 NSXMLParser,另一种就是 GDataXML。 关于这两种解析的具体方式我就不多介绍了。可以去参考 iOS 开发——XML/JSON 数据解析
一开始我们用的就是系统自带的,因为直觉感觉系统的会好一点,但是用了之后才知道这其中的辛酸泪啊!!!!后来我么那就用了 GDataXML 这个用起来轻便多了。但是我看网上的 各种例子都是加载本地的 XML 文件。下面我就上代码,怎么去解析一个网络的 XML 文件。
- NSString * xmlStr = [@"写入你获取的网络XML文件的URL"stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
- NSString * xml = [NSString stringWithContentsOfURL: [NSURL URLWithString: xmlStr] encoding: NSUTF8StringEncoding error: nil];
- GDataXMLDocument * xmlDoc = [[GDataXMLDocument alloc] initWithXMLString: xml options: 0 error: nil];
- GDataXMLElement * xmlEle = [xmlDoc rootElement];
- NSArray * array = [xmlEle elementsForName: @"device"];
- for (GDataXMLElement * ele in array) {
- GDataXMLElement * friendlyNameELe = [[ele elementsForName: @"friendlyName"] objectAtIndex: 0];
- NSString * friendlyNameStr = [friendlyNameELe stringValue];
- GDataXMLElement * iconListELe = [[ele elementsForName: @"iconList"] objectAtIndex: 0];
- GDataXMLElement * iconELe = [[iconListELe elementsForName: @"icon"] objectAtIndex: 0];
- GDataXMLElement * urlELe = [[iconELe elementsForName: @"url"] objectAtIndex: 0];
- NSString * urlStr = [urlELe stringValue];
- }
获取什么样的节点内容还是需要你自己去根据你自己的需求去做调整的,这里我们需要的就是 friendlyName 和 url 这两个节点的内容。
来源: https://juejin.im/post/5a39ce59f265da43195668b3