Чтение VTD-XML не дает результатов - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь прочитать RSS-контент, используя VTD-XML.Ниже приведен образец RSS.

<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
   <?xml-stylesheet type="text/xsl" href="rss.xsl"?>
   <channel>
      <title>MyRSS</title>
      <atom:link href="http://www.example.com/rss.php" rel="self" type="application/rss+xml" />
      <link>http://www.example.com/rss.php</link>
      <description>MyRSS</description>
      <language>en-us</language>
      <pubDate>Tue, 22 May 2018 13:15:15 +0530</pubDate>
      <item>
         <title>Title 1</title>
         <pubDate>Tue, 22 May 2018 13:14:40 +0530</pubDate>
         <link>http://www.example.com/news.php?nid=47610</link>
         <guid>http://www.example.com/news.php?nid=47610</guid>
         <description>bla bla bla</description>
      </item>
</channel>
</rss>

В любом случае, как вы знаете, некоторые RSS-каналы могут содержать больше информации о стилях и т. Д. Однако в каждом RSS-формате <channel> и <item> будут общими, по крайней мере, для тех, которые мне нужны..

Я попробовал VTD XML, чтобы прочитать это как можно быстрее.Ниже приведен код.

VTDGen vg = new VTDGen();
        if (vg.parseHttpUrl(appDataBean.getUrl(), true)) {
            VTDNav vn = vg.getNav();
            AutoPilot ap = new AutoPilot(vn);
            ap.selectXPath("/channel/item");
            int result = -1;

            while ((result = ap.evalXPath()) != -1) {
                if (vn.matchElement("item")) {
                    do {
                        //do something with the contnets in the item node
                        Log.d("VTD", vn.toString(vn.getText()));
                    } while (vn.toElement(VTDNav.NEXT_SIBLING));
                }
            }
        }

К сожалению, это ничего не печатало.Что я здесь не так делаю?Кроме того, не RSS-каналы очень большие, поэтому мне нужно прочитать их за пару миллисекунд.Этот код на Android.

...