Java 使用StaX跳过XML
以下: 我将实时流数据写入XML文件,并希望稍后使用StaX对其进行解析。因为实时流数据有时发生得非常频繁,所以写流过程有时会“吞没”以(部分)格式错误的XML文件结尾的数据 现在我在文件中的某个点上发现了解析错误 有没有办法告诉StaX解析器跳过XML文件中格式错误的pasage?是否可以向前推动光标,直到完成错误的部分? 当然,我也会致力于编写算法,但我也需要一个健壮的解析机制 目前我正在使用XMLStreamReader进行解析 谢谢Java 使用StaX跳过XML,java,xml,stax,Java,Xml,Stax,以下: 我将实时流数据写入XML文件,并希望稍后使用StaX对其进行解析。因为实时流数据有时发生得非常频繁,所以写流过程有时会“吞没”以(部分)格式错误的XML文件结尾的数据 现在我在文件中的某个点上发现了解析错误 有没有办法告诉StaX解析器跳过XML文件中格式错误的pasage?是否可以向前推动光标,直到完成错误的部分? 当然,我也会致力于编写算法,但我也需要一个健壮的解析机制 目前我正在使用XMLStreamReader进行解析 谢谢 Jonathan使用stax进行验证如何,但由于sta
Jonathan使用stax进行验证如何,但由于stax不支持其他方式,因此只能通过一次验证
public class StaxValidationCheckDemo {
public static void main (String args[]) throws Exception {
XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(new FileInputStream("myxml.xml"));
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(new File("myxml.xsd"));
Validator validator = schema.newValidator();
validator.validate(new StAXSource(reader));
//its valid if there are no error or no exception thrown else invalid
}
}
嗨,谢谢。我已经考虑过验证,但实际上这不是我需要的。我在(parser.next()){try{//parse}catch(parsingeexception){//skip}}“code”时会考虑更多类似“code”的内容,如果没有办法使用Stax,那么还有一些其他建议如何在不预加载的情况下处理它?我的理解是,Stax支持单通道pasring,您可能需要重新选择库..通过流,您指的是连续的、永无止境的大型XML,还是一长串XML文档?