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