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

在Java中使用for each获取不正确的输出,java,loops,web-scraping,jaunt-api,Java,Loops,Web Scraping,Jaunt Api,我有一个如下所示的XML提要,正在使用Jaunt API进行解析: <item> <pubdate>12 march </pubdate> </item> <item> <pubdate>15 march </pubdate> </item> 3月12日 3月15日 我编写了以下代码 Elements i =agent.doc.findEach("<item>");

我有一个如下所示的XML提要,正在使用Jaunt API进行解析:

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

3月12日
3月15日
我编写了以下代码

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);
Elements i=agent.doc.findEach(“”);
{
用于(元素项:i)
{
字符串pubDate=i.findFirst(“”.innerHTML();
pubDate=newstringbuilder(newstringbuilder(pubDate.substring(9)).reverse().toString().substring(3)).reverse().toString();
系统输出打印项次(pubDate);
我仍然得到相同的输出,比如
3月12日
3月12日
等,而不是
3月12日

3月15日

问题是您在
i
上调用
findFirst(“”.innerHTML();
,而不是在
上调用它

第二,你仍然可以得到所有的3月12日,因为你正在抓取的提要可能会在3月12日发布,但是请注意时间。每种情况下都会有所不同。这意味着你的代码工作正常

希望有帮助

编辑

不需要使用StringBuilder。以下是简短而精确的代码

Elements i=agent.doc.findEach("<item>");
            for(Element item:i)
            {
                System.out.println(item.findFirst("<pubDate>").findFirst(Comment.CDATA).getText());
            }
Elements i=agent.doc.findEach(“”);
用于(元素项:i)
{
System.out.println(item.findFirst(“”).findFirst(Comment.CDATA.getText());
}