【问题标题】:"Copy" xml block during Stax parsing of large xml file在大型 xml 文件的 Stax 解析期间“复制”xml 块
【发布时间】:2012-11-20 17:00:59
【问题描述】:

我有一个非常大的 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 存储整个元素文本,即。 &lt;list-item id="..."&gt; ... &lt;/list-item&gt; 内存中。有没有一种简单的方法可以在 Stax 中执行此操作,还是我需要手动编写字符串?

【问题讨论】:

    标签: large-files stax


    【解决方案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
    
        }
    

    很酷,不是吗?

    【讨论】:

      猜你喜欢
      • 2015-01-20
      • 2015-12-29
      • 2011-05-09
      • 1970-01-01
      • 2015-06-13
      • 1970-01-01
      • 1970-01-01
      • 2011-08-24
      相关资源
      最近更新 更多