逐行解析xml内容并从中提取一些值

时间:2014-08-08 20:00:33

标签: java parsing groovy xml-parsing

如何从以下文字内容中优雅地提取这些值?我有这个包含数千个条目的长文件。我尝试了XML Parser和Slurper方法,但是内存不足。我只有1GB。所以现在我逐行读取文件并提取值。但我认为在Java / Groovy中应该有更好的方法来做到这一点,也许是一种更清洁和可重用的方式。 (我从标准输入中读取内容)

1行内容:

<sample t="336" lt="0" ts="1406036100481" s="true" lb="txt1016.pb" rc="" rm="" tn="Thread Group 1-9" dt="" by="0"/>

我的Groovy解决方案:

Map<String, List<Integer>> requestSet = new HashMap<String, List<Integer>>();
String reqName;
String[] tmpData;
Integer reqTime;

System.in.eachLine() { line ->

    if (line.find("sample")){
        tmpData = line.split(" ");
        reqTime = Integer.parseInt(tmpData[1].replaceAll('"', '').replaceAll("t=", ""));
        reqName = tmpData[5].replaceAll('"', '').replaceAll("lb=", "");

        if (requestSet.containsKey(reqName)){
            List<Integer> myList = requestSet.get(reqName);
            myList.add(reqTime);
            requestSet.put(reqName, myList);
        }else{
            List<Integer> myList = new ArrayList<Integer>();
            myList.add(reqTime);
            requestSet.put(reqName, myList);
        }
    }
}

任何可以改善此问题的建议或代码段?

0 个答案:

没有答案