我知道我可以在使用sax時驗證xml文件。但是,當我使用Stax時,我可以驗證嗎?stax xml驗證
13
A
回答
0
沒有標準的方法來做到這一點。但是,有一個名爲StAX2的API擴展,它支持使用Sun的MSV(多模式驗證)進行驗證。我會推薦使用Woodstox StAX2實現。
18
有XML驗證兩種方法可能與SAX和DOM:單獨
- 驗證 - 解析期間通過Validator.validate()
- 驗證 - 通過DocumentBuilderFactory.setSchema()和SAXParserFactory.s etSchema()
使用StAX,驗證可能,但只有這樣做的第一種方式。
你可以嘗試這樣的事情:
import javax.xml.validation.*;
import javax.xml.transform.stax.*;
import javax.xml.stream.*;
import javax.xml.*;
import java.io.*;
public class StaxValidation {
public static void main (String args[]) throws Exception {
XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(new FileInputStream("test.xml"));
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(new File("test.xsd"));
Validator validator = schema.newValidator();
validator.validate(new StAXSource(reader));
//no exception thrown, so valid
System.out.println("Document is valid");
}
}
17
您可以分析並一次通過使用StAX驗證。使用javax.xml.stream.util.StreamReaderDelegate:
XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(new FileInputStream ("test.xml"));
reader = new StreamReaderDelegate(reader) {
public int next() throws XMLStreamException {
int n = super.next();
// process event
return n;
}};
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(new File("test.xsd"));
Validator validator = schema.newValidator();
validator.validate(new StAXSource(reader));
驗證讀取的test.xml調用reader.next(),你處理解析事件如常。
相關問題
- 1. 使用JAXB和Stax驗證編組XML文檔
- 2. 使用StAX進行xml驗證:無法識別的屬性'javax.xml.stream.isInterning'
- 3. 使用StaX和DTD驗證標記
- 4. 使用StAX驗證數字簽名
- 5. StAX解析器的XMLSchema驗證
- 6. 用StaX跳過XML
- 7. XML驗證vs Java驗證
- 8. STAX - 獲取XML節點串
- 9. Aptana XML驗證
- 10. PHP XML驗證
- 11. Eclipse驗證XML
- 12. XML驗證
- 13. 如何StAX的處理XML的修改使用StAX
- 14. xml驗證:驗證URI類型
- 15. XML架構驗證 - 現場驗證
- 16. XML驗證失敗
- 17. Tiles2 + Struts2 xml驗證
- 18. 驗證XML對XSD
- 19. 驗證XML和DTD
- 20. XML驗證錯誤
- 21. XML DTD failling驗證
- 22. XML驗證錯誤
- 23. XML XSL XSD驗證:
- 24. php-xml驗證xsd
- 25. XML簽名驗證
- 26. 從Twitter驗證XML
- 27. XML驗證失敗
- 28. XML驗證錯誤
- 29. XML驗證問題
- 30. XML驗證混淆
任何幫助(JBoss VS StAX問題)? http://stackoverflow.com/q/20493359/1213738 – 2013-12-10 11:56:54
我會注意到,你不能使用像XMLStreamReaderImpl.getElementText(),爲了方便在你的委託next()方法,因爲它將前面的位置移動,這將混淆驗證器。但這可以解決 - 我喜歡它。 – nsandersen 2016-04-22 14:14:03