Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用StaX跳过XML_Java_Xml_Stax - Fatal编程技术网

Java 使用StaX跳过XML

Java 使用StaX跳过XML,java,xml,stax,Java,Xml,Stax,以下: 我将实时流数据写入XML文件,并希望稍后使用StaX对其进行解析。因为实时流数据有时发生得非常频繁,所以写流过程有时会“吞没”以(部分)格式错误的XML文件结尾的数据 现在我在文件中的某个点上发现了解析错误 有没有办法告诉StaX解析器跳过XML文件中格式错误的pasage?是否可以向前推动光标,直到完成错误的部分? 当然,我也会致力于编写算法,但我也需要一个健壮的解析机制 目前我正在使用XMLStreamReader进行解析 谢谢 Jonathan使用stax进行验证如何,但由于sta

以下:

我将实时流数据写入XML文件,并希望稍后使用StaX对其进行解析。因为实时流数据有时发生得非常频繁,所以写流过程有时会“吞没”以(部分)格式错误的XML文件结尾的数据

现在我在文件中的某个点上发现了解析错误

有没有办法告诉StaX解析器跳过XML文件中格式错误的pasage?是否可以向前推动光标,直到完成错误的部分? 当然,我也会致力于编写算法,但我也需要一个健壮的解析机制

目前我正在使用XMLStreamReader进行解析

谢谢
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文档?