我想使用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/

10-10 03:45