dom遍历Jquery

时间:2013-05-23 13:27:36

标签: jquery xml

好的我正在尝试将通过curl脚本导入的xml解析为html页面,我的curl工作正常,它会像我这样返回我的xml:

<item> 
<title> TITLE ONE</title>
<description> desc one</description>
<guid>http://example.com</guid>
</item>
<item> 
<title> TITLE two</title>
<description> desc two</description>
<guid>http://exampletwo.com</guid>
</item> 

在onpage xml出现之后我正在尝试将其转换为html并将其附加到另一个div,如下所示:

//Convert onpage feed to html//
var title= jQuery('#results item > title');
var titletext = jQuery("#results item > title").text()

var description = jQuery('#results item > description');
var descriptiontext = jQuery("#results item > description").text()

var guid = jQuery('#results item > salaryrange guid');
var guidtext = jQuery("#results item > salaryrange guid").text()

var rss = jQuery('#results item');
var rsstext = jQuery("#results item").text()

jQuery(title, this).replaceWith('<h1>'+titletext+': </h1/>')
jQuery(description, this).replaceWith('<p class="feed_desc">'+descriptiontext+': </p>')

// move to new div stripping unwanted xml//
var title= jQuery('#results_two .rssfeed > title');
var titletext = jQuery("#results_two .rssfeed > title").text()

var description = jQuery('#results_two .rssfeed > description');
var descriptiontext = jQuery("#results_two .rssfeed > description").text()

var guid = jQuery('#results_two .rssfeed > salaryrange guid');
var guidtext = jQuery("#results_two .rssfeed > salaryrange guid").text()

var rss = jQuery('#results item');
var rsstext = jQuery("#results item").html()

title.replaceWith('<a href='+guidtext+' class="feedh1">'+titletext+': </a><br/>')



description.replaceWith('<p class="feed_desc">'+descriptiontext+': </p>')

rss.replaceWith('<div class="rssfeed">'+rsstext+': </div>')

jQuery("#results_two").append('<div class="rssfeed">'+rsstext+': </div>');
//empty old div//
jQuery("#results").empty();
//remove left over xml//
 jQuery('.rssfeed > location, .rssfeed > salaryrange').remove();

 //strip empty <p> tags //
 jQuery('p').each(function() {
    var $this = jQuery(this);
    if($this.html().replace(/\s|&nbsp;/g, '').length == 0)
        $this.remove();
});

只要Feed中只有一个项目超过一个项目,只要将这些项目应用到Feed中的第一个或最后一个项目,那么这个项目效果很好。 我如何一次只将附件应用于一个项目? 这是一个仅使用标题的简化版本:

   var title= jQuery('#results item > title');
    var titletext = jQuery("#results item > title").text()

    title.replaceWith('<h1>'+titletext+': </h1>')

克里斯

1 个答案:

答案 0 :(得分:1)

你可以这样做...... http://jsfiddle.net/yMLUp/

$("item").each( function() {
    $title = $(this).children("title");
    $title.replaceWith("<h1>"+$title.text()+"</h1>");
    //change other elements in the same manner
});

您可以将其更改为您的上下文#results item ...然后您可以在其中replaceWith然后将其附加到您想要的任何位置,或者只需将新内容添加到新元素中解析。

这是一个解析所有元素的jsfiddle:http://jsfiddle.net/yMLUp/1/