解析无效的xml
我假设你的意思是你正在讨论格式良好的XML,但是包含未在模式中定义的元素的XML?
如果是这样,那么JAXB就可以。 JAXB无法识别的输入XML中的任何元素都将被忽略。
缺失元素呢?我的意思是我有一堆没有xsd的xml文档,我从xml生成模式(应该是这样),但有时会发生其中一个xml文档中缺少元素。你能指点我怎么处理它吗?是否所有关于修改架构并设置不是强制性的元素?表示该元素的对象将是空的?我决定是否使用jaxb或为每个xml文档手动构建DOM,这是不好的。但是这是我上一次使用jaxb的一年。提前致谢 – lisak 2010-09-27 19:36:35
我的代码如下。 Jaxb解析成功,直到未知标签,在第一个未知标签后,对于所有定义的标签,警告该标签是未知标签(print“Unexpected element {} ...”消息)
`Unmarshaller unmarshaller = context.createUnmarshaller (); unmarshaller.setValidating(假); ValidationEventHandler validationHandler = new IwisValidationEventHandler(); unmarshaller.setEventHandler(validationHandler);
public class IwisValidationEventHandler implements ValidationEventHandler private static Logger logger = Logger.getLogger(IwisValidationEventHandler.class); public boolean handleEvent(ValidationEvent ve){ System.out.println(ve.getMessage); 返回true; } }`
您可以添加XSD:任何元素
<xsd:complexType name="Type">
<xsd:sequence>
<xsd:element name="root" type="Root"/>
<xsd:any maxOccurs="unbounded" processContents="lax"/>
</xsd:sequence> </xsd:complexType>
.....
您可以指定错误,当您试图做到这一点你要?你正在使用哪种JAXB实现?任何可能的代码片段显示你如何实例化unmarshaller和解析XML? – Jherico 2009-10-26 18:56:33
我的代码如下。 Jaxb解析成功,直到未知标记,从这一点所有已知的标记是无效的。 Unmarshaller unmarshaller = context.createUnmarshaller(); unmarshaller.setValidating(false); ValidationEventHandler validationHandler = new IwisValidationEventHandler(); unmarshaller.setEventHandler(validationHandler); public class IwisValidationEventHandler implements ValidationEventHandler { private static Logger logger = Logger.getLogger(IwisValidationEventHandler.class); public boolean handleEvent(ValidationEvent ve){ return true; } } – 2009-11-02 16:30:49