组合Xml字符串拆分Java

时间:2016-05-03 14:50:37

标签: java xml string split

我正在尝试拆分组合文本文件。组合文本文件里面有多个xml文件。我想拆分<?xml version='1.0'?>,它是组合文本文件中每个新xml的开头。不确定最好的方法是什么。目前这是我没有正确分割的东西。

更新了代码工作(引号中的固定引号问题添加了Pattern.quote):

Scanner scanner = new Scanner( new File("src/main/resources/Flume_Sample"), "UTF-8" );
String combinedText = scanner.useDelimiter("\\A").next();
scanner.close(); // Put this call in a finally block
String delimiter = "<?xml version=\"1.0\"?>";
String[] xmlFiles = combinedText.split("(?="+Pattern.quote(delimiter)+")");


for (int i = 0; i < xmlFiles.length; i++){
     File file = new File("src/main/resources/output_"+i);
     FileWriter writer = new FileWriter(file);
     writer.write(xmlFiles[i]);
     System.out.println(xmlFiles[i]);
     writer.close();
}

3 个答案:

答案 0 :(得分:3)

split方法采用正则表达式字符串,因此您可能希望将分隔符String转义为有效的正则表达式:

String[] xmlFiles = combinedText.split(Pattern.quote(delimiter));

请参阅Pattern.quote方法。

答案 1 :(得分:0)

还要注意,如果以这种方式继续,您将在内存中加载整个初始文件。 如果输入文件很大,流式方法会表现得更好......

答案 2 :(得分:0)

如果你想手动解析数据,我会使用这样的东西。

    public static void parseFile(File file) throws AttributeException, LineException{
    BufferedReader br = null;
    String s = "";
    int counter = 0;

    if(file != null){
        try{
            br = new BufferedReader(new FileReader(file));
            while((s = br.readLine()) != null){
                if(s.contains("<?xml version='1.0'?>")){
                    //Write in new file with Stringbuffer and Filewritter. 
                }
            }
            br.close();
            }catch (IOException e){
                System.out.println(e);
            }
    }
}