xml SAX解析没有返回所需的结果

时间:2012-08-02 18:30:00

标签: java android

我的客户提供的xml如下:

<?xml version='1.0' encoding='UTF-8' ?><quizzes updatetimestamp='2012-08-01 06:24'><quiz q_id='1'>
<q_name>Airplane!</q_name >
<q_appleid>com.patelware.moviesquiz.free</q_appleid>
<q_description>"Roger, Roger"</q_description>
<q_urlicon>http://www.inall3.com/king/icons/airplane_icon.png</q_urlicon>
<q_urlmainimg>http://www.inall3.com/king/icons/airplane_main.png</q_urlmainimg>
<q_urldb>http://www.inall3.com/king/dbs/airplane.xml</q_urldb>
<q_timesofupload>2011-05-01 00:00:00</q_timesofupload>
<q_priceindollar>0.00</q_priceindollar>

<q_cattype>Comedy</q_cattype>
<q_thighscore>http://www.inall3.com/hs/highscoreairplane.php?action=gethighscores&amp;mode=1</q_thighscore>
<q_phighscore>http://www.inall3.com/hs/highscoreairplane.php?action=gethighscores&amp;mode=2</q_phighscore>
</quiz>

但是当我使用SAX解析器解析它时,所有内容都会正确返回但是当我尝试解析<q_thighscore><q_phighscore>时它只返回mode=1mode=2,但我想要要解析的完整链接,问题在哪里以及我现在应该做什么?

2 个答案:

答案 0 :(得分:0)

您可能希望使用sax默认处理程序。看看它是否有效。如果不是,可能需要扩展默认的Handler并覆盖此方法的行为以正确存储值。 myURLString是您在扩展类中定义的变量。然后可以在endElement方法中访问此变量以进行示例。你完全可以控制它。

所以一种方法是扩展org.xml.sax.helpers.DefaultHandler;

并覆盖如下

   protected String myValueString;


   @Override
   public void characters(char[] ch, int start, int length) throws SAXException
   {
    super.characters(ch, start, length);  // deal with escape values here.
            myValueString = ...

    }

then inside   endElement(){


   check if matches your type and if so use myValueString;

答案 1 :(得分:0)

我已经解决了它,我只使用了Pull解析器而不是SAX解析器,它起作用了:)