0
我有一個很大的xml文件需要針對大的XSD進行驗證。當存在驗證錯誤時,客戶端要求我填充具有不同數據值的表格。例如,如果學生證無效,我會顯示學區,區域和學生證。在XML的另一部分,如果狀態無效,我將顯示學校名稱,州和地區。要顯示的數據因無效數據而異。但是應該提取其作爲無效子元素父母的兩三四個元素。從失敗的XML中獲取元素
如何使用XMLSTREAMREADER和Validator提取數據?
我想這個,我可以只得到無效的元素沒有其他數據等
public class StaxReaderWithElementIdentification {
private static final StreamSource XSD = new StreamSource("files\\InterchangeEducationOrganizationExension.xsd");
private static final StreamSource XML = new StreamSource("files\\InterchangeEducationOrganizationExension.xml");
public static void main(String[] args) throws Exception {
SchemaFactory factory=SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(XSD);
XMLStreamReader reader = XMLInputFactory.newFactory().createXMLStreamReader(XML);
Validator validator = schema.newValidator();
validator.setErrorHandler(new MyErrorHandler(reader));
validator.validate(new StAXSource(reader));
}
}
和處理程序是:
public class MyErrorHandler implements ErrorHandler {
private XMLStreamReader reader;
public MyErrorHandler(XMLStreamReader reader) {
this.reader = reader;
}
@Override
public void error(SAXParseException e) throws SAXException {
warning(e);
}
@Override
public void fatalError(SAXParseException e) throws SAXException {
warning(e);
}
@Override
public void warning(SAXParseException e) throws SAXException {
//System.out.println(reader.getProperty(name));
System.out.println(reader.getLocalName());
System.out.println(reader.getNamespaceURI());
e.printStackTrace(System.out);
}
}
誰能幫我,我怎麼能提取其他數據何時出現驗證錯誤?