Jquery:在CDATA中解析标记

时间:2014-01-20 12:10:31

标签: javascript jquery xml rss

我正在尝试解析嵌套在CDATA值中的标记:

基本上,我有以下xml:

<item>
            <title>Time Travel Via Wormhole Breaks the Rules of Quantum Mechanics</title>
            <description><![CDATA[<p>Science has done it again everybody! Brace yourselves for this groundbreaking news, freshly determined by physicists: Time travel, if it exists, may have some weird consequences. Gosh, who’d have thunk it? But no, seriously, a recent article suggests that a certain kind of theoretically possible time machine would wreak minor havoc with a firm principle [&#8230;]</p><p>The post <a href="http://blogs.discovermagazine.com/crux/2014/01/16/time-travel-via-wormhole-breaks-the-rules-of-quantum-mechanics/">Time Travel Via Wormhole Breaks the Rules of Quantum Mechanics</a> appeared first on <a href="http://blogs.discovermagazine.com/crux">The Crux</a>.</p>]]></description>
            <content:encoded><![CDATA[<p><a href="http://blogs.discovermagazine.com/crux/files/2014/01/time-travel.jpg"><img class="aligncenter  wp-image-3898" alt="time-travel" src="http://blogs.discovermagazine.com/crux/files/2014/01/time-travel.jpg" width="600" height="405" /></a></p>
<p>Science has done it again everybody! Brace yourselves for this groundbreaking news, freshly determined by physicists: Time travel, if it exists, may have some weird consequences. Gosh, who’d have thunk it?</p>
<p>As with all speculative science stories, it’s important to keep things in perspective. This finding would have far-reaching and serious consequences for Internet encryption and quantum computers, among other things — assuming these wormholes really do exist. But, equally valid, the fact that this theoretical construction appears to violate known physical laws also suggests that, alas, maybe the particular wormholes in the study just don’t exist.</p>
<p>Whatever tricks the universe has up its sleeve, it’s exciting that we’re able to study even its wackiest possibilities in so much detail. I can&#8217;t wait to see how it turns out (no spoilers, time travelers).</p>
<p><em>Image courtesy <a id="portfolio_link" href="http://www.shutterstock.com/gallery-73592p1.html">Graeme Dawes </a>/ <a id="portfolio_link" href="http://www.shutterstock.com/gallery-551845p1.html">Ilias Strachinis </a>/ Shutterstock</em></p>
<p>The post <a href="http://blogs.discovermagazine.com/crux/2014/01/16/time-travel-via-wormhole-breaks-the-rules-of-quantum-mechanics/">Time Travel Via Wormhole Breaks the Rules of Quantum Mechanics</a> appeared first on <a href="http://blogs.discovermagazine.com/crux">The Crux</a>.</p>]]></content:encoded>
</item>

我可以正确解析标题,描述以及内容:带有所有CDATA值的编码标签:

$(this.data).find('item:lt(3)').each(function(index) {
            var e = $(this);
            console.log(e);
            var category    = e.find('category').text();
            var link        = e.find('link').text();
            var title       = e.find('title').text();
            var summary     = e.find('description').text().substring( 0, 120 ) + "...";
            var content     = e.find('encoded').text();
            var image       HOW TO EXTRACT
            alert(image);

我缺少的是图像的URL,不幸的是,某些其他RSS提要到特定的元素: EX:

<enclosure type="image/jpeg" url="http://www.nwzonline.de/rw/NWZ_CMS/NWZ/2011-2013/Produktion/2014/01/17/SPORT/2/Bilder/generated/SPORT_1_8d5e0b63-8d51-4e87-8249-58eab44cc923--600x337--280x158.jpg"></enclosure>
var image = e.find('img').attr('url');

但是在CDATA内部。任何ide我怎么能从中提取src值?我需要获得:“http://blogs.discovermagazine.com/crux/files/2014/01/time-travel.jpg

非常感谢。

1 个答案:

答案 0 :(得分:0)

CDATA内没有标签。 CDATA的意思是“这里的东西包含看起来像标签的东西,但它们不是标签,它们是普通的字符数据”。这是CDATA的唯一目的,说内部没有标签;如果您希望将标签视为标签,请不要将它们标记为CDATA。

如果其他人犯了这个错误并且您必须更正它,那么唯一的方法是在CDATA标记内提取字符串并将其传递给XML解析器以解析为树。