0

我正在寻找一种从 YouTube 提要(例如http://gdata.youtube.com/feeds/api/users/USERNAME/uploads)接收 XML 元素(条目的 id)的方法。

提要如下所示:

<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/&quot;DUcFQncyfCp7I2A9WhVUFE4.&quot;">
<id>tag:youtube.com,2008:user:USERNAME:uploads</id>
<updated>2012-05-19T14:16:53.994Z</updated>
  ...
    <entry gd:etag="W/&quot;DE8NSX47eCp7I2A9WhVUFE4.&quot;">
        <id>tag:youtube.com,2008:video:MfPpj7f6Jj0</id>
        <published>2012-05-18T13:30:38.000Z</published>
  ...

我想获得条目中的第一个标签(标签:youtube.com,2008 ...)。

在谷歌搜索了几个小时并浏览了 GDataXML wiki 之后,我一无所知,因为 XPath 和 GData 都无法提供正确的元素。我的第一个猜测是,他们不能忽略提要和条目标签中的属性。

使用 XPath 的解决方案会很棒,但同样欢迎使用 Objective-C 中的解决方案。

4

1 回答 1

1

由于默认命名空间,您可能在尝试使 XPath 工作时遇到问题。

如果你只想要第一个标签entry,你可以使用这个:

/*/*[name()='entry']/*[1]

如果你特别想要第一个id,你可以使用这个:

/*/*[name()='entry']/*[name()='id'][1]

此外,如果您可以使用 XPath 2.0,您可以完全跳过谓词并使用 * 作为命名空间前缀:

/*/*:entry/*:id[1]
于 2012-05-19T17:56:10.183 回答