在文本字符串中查找<img/>标记

时间:2011-09-29 09:01:14

标签: javascript jquery xml parsing

我有一个xml文档(来自feed),我正在从中提取值:

$(feed_data).find("item").each(function() {
    if(count < 3) {
    //Pull attributes out of the current item. $(this) is the current item.
        var title = $(this).find("title").text();
        var link = $(this).find("link").text();
        var description = $(this).find("description").text();

现在在“description”中我需要获取img元素,但这会给我带来一些问题。 “descripttion”是一个常规的字符串元素,似乎我不能在此调用“.find()”方法,所以我该怎么办?

我试过调用.find()

var img = $(this).find("description").find("img");

但这是不行的。 img被包裹在一个跨度中,但我也无法达到这一点。有什么建议?我宁愿避免使用子串和正则表达式解决方案,但我不知所措。

我也尝试将“description”字符串转换为xml对象,如下所示:

var parser = new DOMParser();
var desc = parser.parseFromString(test,'text/xml'); 

$(desc).find("img").each(function() {
    alert("something here");
});

但这也不起作用。它似乎会,但我得到一个“文档没有很好的形成”错误。

3 个答案:

答案 0 :(得分:3)

尝试在虚拟div中包含description标记的内容,这似乎对我更有效,并允许jQuery的.find()按预期工作。

e.g。

$(feed_data).find("item").each(function() {
    if(count < 3) {
        //Pull attributes out of the current item. $(this) is the current item.
        var title = $(this).find("title").text();
        var link = $(this).find("link").text();
        var description = '<div>' + $(this).find("description").text() + '</div>';
        var image = $(description).find('img');

答案 1 :(得分:3)

嗨,谢谢你的回复。我给GregL打了嘀嗒,因为我确信他的解决方案会起作用,因为原理与我最终的结果相同。我的解决方案如下:

    $(feed_data).find("item").each(function() {
        if(count < 3) {
            //Pull attributes out of the current item. $(this) is the current item.
            var title = $(this).find("title").text();
            var link = $(this).find("link").text();
            var description = $(this).find("description").text();

            var thumbnail = "";
            var temp_container = $("<div></div>");
            temp_container.html(description);
            thumbnail = temp_container.find("img:first").attr("src");

所以将字符串包装在div中,然后使用“find()”来获取第一个img元素。我现在有了图像源,可以根据需要使用。

答案 2 :(得分:1)

也许您应该尝试将描述文本转换为html标记,然后尝试通过jquery遍历它

$('<div/>').html($(this).find("description").text()).find('img')

note :未经过测试