【问题标题】:Combined Xml String Split Java组合 XML 字符串拆分 Java
【发布时间】:2016-05-03 14:50:37
【问题描述】:

我正在尝试拆分组合的文本文件。合并后的文本文件里面有多个 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();
}

【问题讨论】:

    标签: java xml string split


    【解决方案1】:

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

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

    参见Pattern.quote 方法。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        如果您想手动解析数据,我会使用类似的方法。

            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);
                    }
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-03-23
          • 2021-06-10
          • 1970-01-01
          • 2014-05-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多