我使用JAXB
解析xml。我还想成功解析XML
,当XML
无效且有附加标记时。只需忽略XSD
中不存在的标签即可。可能吗?解析无效的xml
解析无效的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>
.....
- 1. 解析无效的XML C#
- 2. 去解析无效XML
- 3. 解析无效的XML中的R
- 4. 在C++中解析无效的XML
- 5. Java SAXParser解析无效的XML
- 6. 解析XML中的无效字符
- 7. 使用XStream解析器解析无效的XML字符-java,
- 8. 用无效节点解析XML
- 9. 无效字符实体解析XML
- 10. 解析无效字符到XML
- 11. 用无效字符解析XML
- 12. WinJS:高效的XML解析
- 13. 高效的XML解析
- 14. XML解析:无法解析XML正确
- 15. XML Lite解析问题 - 解析时忽略无效数据
- 16. 无解析消息的XML解析
- 17. XmlException解析XML时有效
- 18. 高效解析XML与PHP
- 19. 无法解析XML
- 20. 解析无效JSON
- 21. 的XDocument无法解析XML
- 22. 解析无效的JSON
- 23. PHP解析无效的HTML
- 24. 解析xml文档Java“无法解析”
- 25. 使用jaxb解析无效的xml - 解析器可以更宽松吗?
- 26. 解析XML的最有效方法
- 27. 高效的XML解析:类型
- 28. 有效解析字符的XML数据
- 29. 解析HTML这不是有效的XML
- 30. 如何解析“无效的”嵌套的XML标记
您可以指定错误,当您试图做到这一点你要?你正在使用哪种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