考虑以下输入xml文档:
<oracle:EMP xmlns:oracle="http://www.oracle.com/xml"/>
...以及以下处理程序:
final class XMLizatorSaxHandler extends DefaultHandler {
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
System.out.println(uri + "," + localName + "," + qName);
}
}
当将它与
SAXParser
一起使用时,我期望以下输出:uri: http://www.oracle.com/xml
localName: EMP
qName: oracle:EMP
但是我得到了这个:
uri:
localName:
qName: oracle:EMP
为什么?如何获得正确的信息?
最佳答案
好的,感谢史蒂夫的提示,我找到了解决方案。
需要在SaxParserFactory.setNamespaceAware(true);
之前调用SaxParserFactory.newSAXParser();
这是完整的代码:
SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
saxParserFactory.setNamespaceAware(true); // here is the trick
SAXParser parser = saxParserFactory.newSAXParser();
MyHandler handler = new MyHandler();
parser.parse(in, handler);