我试图在Oracle 10g中提取带有名称空间的标记的值。我的问题是
select extract(xmltype(xml_text),
'/feed/entry[1]/yt:statistics',
'xmlns:yt="http://gdata.youtube.com/schemas/2007"') title
from edgecast_xml
where load_date > sysdate-1
并返回null
原始的xml是这个(我必须标记为htp而不是http以避免链接):
<feed xmlns='htp://www.w3.org/2005/Atom' xmlns:media='htp://search.yahoo.com/mrss/' xmlns:openSearch='htp://a9.com/-/spec/opensearch/1.1/' xmlns:gd='htp://schemas.google.com/g/2005' xmlns:yt='http://gdata.youtube.com/schemas/2007' gd:etag='W/"D0YEQH88eSp7I2A9XRZQEU8."'>
<entry gd:etag='W/"CUMNRH47eCp7I2A9XRZRGUo."'>
<id>tag:youtube.com,2008:video:qXPtXPJLnJY</id>
<updated>2014-06-17T02:51:35.000Z</updated>
<category scheme='http://schemas.google.com/g/2005#kind' term='http://gdata.youtube.com/schemas/2007#video'/>
<category scheme='http://gdata.youtube.com/schemas/2007/categories.cat' term='Nonprofit' label='Nonprofits & Activism'/>
<title>Rear Admiral Lee Addresses Restrictive Regulations on Religious Liberty</title>
<gd:rating average='4.8343196' max='5' min='1' numRaters='5239' rel='http://schemas.google.com/g/2005#overall'/>
<yt:statistics favoriteCount='0' viewCount='365565'/>
<yt:rating numDislikes='217' numLikes='5022'/>
</entry>
</feed>
为什么我会变空?如果我只选择/ feed / entry [1],它会为条目标记中的所有内容返回xml。
答案 0 :(得分:1)
由于在使用/feed/entry[1]
时得到结果,似乎您的默认(Atom)命名空间会自动注册。 yt
命名空间也已注册,因此它应该可以正常工作。
当您提取/feed/entry[1]/yt:statistics
的字符串值时,您会获得 null ,因为<yt:statistics>
元素没有文本内容。这是一个空标签。但是你可以阅读它的属性:
/feed/entry[1]/yt:statistics/@viewCount
和
/feed/entry[1]/yt:statistics/@favoriteCount