0

我有一个非常大的 XML 文件(~3Gb),其结构如下:

<stuff>
   <list>
     <list-item id="..."> ... </list-item>
     <list-item id="..."> ... </list-item>
     <list-item id="..."> ... </list-item>
     <list-item id="..."> ... </list-item>
     <list-item id="..."> ... </list-item>    
     ....    
   </list>
</stuff>

我需要基于属性 id 存储整个元素文本,即。<list-item id="..."> ... </list-item>在记忆中。在 Stax 中是否有一种简单的方法可以做到这一点,还是我需要手动编写字符串?

4

1 回答 1

1

在这种情况下,我建议使用基于 java.util.Scanner 的版本:

    Pattern pattern = Pattern.compile("<list-item .+</list-item>");
    Scanner sc = new Scanner(new File("test.xml"));
    for (;;) {
        String e = sc.findWithinHorizon(pattern, 0);
        if (e == null) {
            break;
        }
        System.out.println(e);

        // analize element's id, decide what to do with it

    }

酷,不是吗?

于 2012-11-20T09:00:59.910 回答