为什么我不能在SAXParser中打开这个XML?

时间:2010-02-12 09:18:08

标签: java xml debugging exception parsing

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?

问题是,我总是进入 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字符串?

2 个答案:

答案 0 :(得分:14)

您调用的parse方法需要读取XML文件的URI。

您可能想要做的是从InputSource创建一个StringReader,如下所示:

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

答案 1 :(得分:3)

SAXParser的parse方法需要将文件名或URI作为第一个参数,而不是读入字符串的XML文件。