在Java中使用for each获取不正确的输出

时间:2014-02-17 15:15:52

标签: java loops web-scraping jaunt-api

我有一个像下面这样的XML提要,我正在使用Jaunt API进行解析:

<item>
  <pubdate>12 march
  </pubdate>
</item>
<item>
  <pubdate>15 march
  </pubdate>
</item>

我写了以下代码

Elements i =agent.doc.findEach("<item>");
{
   for (Element item: i)
   {
       String pubDate=i.findFirst("<pubDate><![CDATA[]]>").innerHTML();

       pubDate=new StringBuilder(new StringBuilder(pubDate.substring(9)).reverse().toString().substring(3)).reverse().toString();
       System.out.println(pubDate);

我仍然获得相同的输出,例如12 march12 march等,而不是12 march15 march

1 个答案:

答案 0 :(得分:0)

问题是您在findFirst("<pubDate><![CDATA[]]>").innerHTML();上呼叫i,而是在item上呼叫。

其次,你可能仍然可以获得所有12游行,因为你正在搜索的饲料可能会在3月12日发布,但请注意时间。在每种情况下都会有所不同。这意味着您的代码工作正常。

希望有所帮助。

修改

没有必要使用StringBuilder.Here是更短更精确的代码。

Elements i=agent.doc.findEach("<item>");
            for(Element item:i)
            {
                System.out.println(item.findFirst("<pubDate>").findFirst(Comment.CDATA).getText());
            }