2010-02-12 2 views
4
public static void parseit(String thexml){ 
    SAXParserFactory factory = SAXParserFactory.newInstance(); 
    SAXParser saxParser; 

    try { 
     saxParser = factory.newSAXParser(); 
     DefaultHandler handler = new DefaultHandler() { 
      public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { 

      } 
      public void endElement(String uri, String localName, String qName)throws SAXException { 

      }   
      public void characters(char ch[], int start, int length) throws SAXException { 

      }    
     };  
     saxParser.parse(thexml, handler); 
     } catch (SAXException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      Log.e("e", "e", e); 
      e.printStackTrace(); 
     }catch (ParserConfigurationException e) { 
      e.printStackTrace();  
     } 
} 

Это мой код. (Большое спасибо этим ребятам: Can someone help me with this JAVA SAXParser?)Почему я не могу открыть этот XML-файл в SAXParser?

Проблема в том, что я всегда попадаю в IOException e. Сообщение это:

java.io.IOException: Couldn't open....and then my XML file. 

Мой файл XML это, и это Строка:

<?xml version="1.0" encoding="UTF-8"?> 
<result> 
    <person> 
     <first_name>Mike</first_name> 
    </person> 
</result> 

Почему не может это прочитать мой XML строку?

ответ

14

Выбранный метод parse ожидает, что URI прочитает XML-файл.

Что вы можете сделать вместо этого создать InputSource из StringReader, как это:

InputSource source = new InputSource(new StringReader(thexml)); 
saxParser.parse(source, handler); 
3

Метод SAXParser's parse ожидает имя файла или URI в качестве первого аргумента, а не файл XML, считанный в строке.