我想使用SAX和Java来解析XML字符串,但会遇到此异常
[致命错误]:1:92:与元素类型“设备”关联的属性“ xsi:type”的前缀“ xsi”未绑定。
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setNamespaceAware(false);
factory.setValidating(false);
SAXParser parser = factory.newSAXParser();
XMLReader xmlReader = parser.getXMLReader();
handler = new ConfigHandler();
xmlReader = XMLReaderFactory.createXMLReader();
// assign our handler
xmlReader.setContentHandler(handler);
// perform the synchronous parse
xmlReader.parse(new InputSource(new StringReader(xml)));
} catch (Exception e) {
e.printStackTrace();
}
这是XML
<device xsi:type="axl:XIPPhone" ctiid="182" uuid="{20a9f66a-fb1f-6981-5851-1474258054dc}">
<fullConfig>true</fullConfig>
<portalDefaultServer>serveraxd.lestry.com</portalDefaultServer>
<deviceProtocol>SOORTY</deviceProtocol>
..
..
</device>
在这种情况下,我无法更改XML内容。
最佳答案
恰如错误消息所述,您尚未为xsi:前缀提供名称空间声明。加
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
到顶级元素(
<device>
元素)。关于java - XML具有xsi:type属性时,Sax解析异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20972123/