我正在寻找一种从YouTube Feed(例如http://gdata.youtube.com/feeds/api/users/USERNAME/uploads)接收XML元素(条目ID)的方法。
Feed看起来像这样:
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:gd="http://schemas.google.com/g/2005" xmlns:yt="http://gdata.youtube.com/schemas/2007" gd:etag="W/"DUcFQncyfCp7I2A9WhVUFE4."">
<id>tag:youtube.com,2008:user:USERNAME:uploads</id>
<updated>2012-05-19T14:16:53.994Z</updated>
...
<entry gd:etag="W/"DE8NSX47eCp7I2A9WhVUFE4."">
<id>tag:youtube.com,2008:video:MfPpj7f6Jj0</id>
<published>2012-05-18T13:30:38.000Z</published>
...
我希望在条目中获得第一个标记(标记:youtube.com,2008 ...)。
经过谷歌搜索几个小时并浏览GDataXML wiki后,我无能为力,因为XPath和GData都无法提供正确的元素。 我的第一个猜测是,他们不能忽略feed和entry标签中的属性。
使用XPath的解决方案会很棒,但Objective-C中的解决方案同样受欢迎。
答案 0 :(得分:1)
由于默认命名空间,您可能在尝试使XPath正常工作时遇到问题。
如果您只想要entry
中的第一个标记,可以使用:
/*/*[name()='entry']/*[1]
如果您想要特定的第一个id
,可以使用:
/*/*[name()='entry']/*[name()='id'][1]
此外,如果您可以使用XPath 2.0,则可以完全跳过谓词并使用*作为名称空间前缀:
/*/*:entry/*:id[1]