Java 从失败的XML获取元素
我有一个大的xml文件要根据一个大的XSD进行验证。当出现验证错误时,客户要求我用不同的数据值填充一个表。例如,如果学生ID无效,我将显示学区、地区和学生ID。在XML的另一部分中,如果州无效,我将显示学校名称、州和地区。要显示的数据因无效数据而异。但它的两个或三个或四个元素是无效子元素的父元素,应该被提取 如何使用XMLSTREAMREADER和Validator提取数据 我尝试了这一个,我只能得到无效的元素,没有其他数据Java 从失败的XML获取元素,java,Java,我有一个大的xml文件要根据一个大的XSD进行验证。当出现验证错误时,客户要求我用不同的数据值填充一个表。例如,如果学生ID无效,我将显示学区、地区和学生ID。在XML的另一部分中,如果州无效,我将显示学校名称、州和地区。要显示的数据因无效数据而异。但它的两个或三个或四个元素是无效子元素的父元素,应该被提取 如何使用XMLSTREAMREADER和Validator提取数据 我尝试了这一个,我只能得到无效的元素,没有其他数据 public class StaxReaderWithElementI
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);
}
}
是否有人可以帮助我在发生验证错误时如何提取其他数据?我不确定这是否是最佳解决方案,但您可以尝试使用并实现一个自定义的解决方案 通过这种方式,您可以解析文档并只对您感兴趣的标记作出反应。无论XML/HTML有多无效,它都会对其进行处理