Java:使用 SAXParser 拆分大型 XML 文件

2023-12-23

我正在尝试使用java将一个大的XML文件分割成更小的文件SAXParser(特别是维基百科转储,未压缩时大约有 28GB)。

我有一个Pagehandler扩展的类DefaultHandler:

private class PageHandler extends DefaultHandler {

   private StringBuffer text;
   ...

  @Override
  public void startElement(String uri, String localName, String qName, Attributes attributes) {

        text.append("<" + qName + ">");
  }

  @Override
  public void endElement(String uri, String localName, String qName) {

        text.append("</" + qName + ">");

        if (qName.equals("page")) {
            text.append("\n");
            pageCount++;
            writePage();
        }

        if (pageCount >= maxPages) {
            rollFile();
        }
    }

  @Override
  public void characters(char[] chars, int start, int length) {
        for (int i = start; i < start + length; i++) {
            text.append(chars[i]);
        }
    }
}

所以我可以毫无问题地写出元素内容。我的问题是如何获取元素标签和属性 - 这些字符似乎没有被报告。充其量我将不得不根据作为参数传递的内容来重建这些startElement- 这似乎有点痛苦。或者有更简单的方法吗?

我想做的就是循环遍历文件并将其写出,经常滚动输出文件。这有多难:)

Thanks


我不太确定我完全理解你想要做什么,但要获得合格的名称作为你只需做的字符串qName.toString()并获取您刚刚执行的属性名称atts.getQName(int index).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java:使用 SAXParser 拆分大型 XML 文件 的相关文章

随机推荐

  • PHP 无符号右移 - 故障

    因此 当使用我的方法在 PHP 中执行 gt gt gt 无符号右移时 当数字涉及负数时 结果不正确 PHP 申请结果 INPUT 10 gt gt gt 3 INPUT 10 gt gt gt 3 OUTPUT 1 OUTPUT 2684
  • 如何更改 GCM 推送通知的样式

    我想将我的应用程序接收的 GCM 推送通知的样式从标准单行通知更改为多行通知 Java世界的解决方案似乎是将通知的样式设置为BigTextStyle当它被创建时 我找到了一个涉及黑客攻击的本地通知解决方案Androidapi JNI Sup
  • H1 标题的背景图片

    在我的 WordPress 主题页面标题中 My Css page h1 pagetitle width auto text align left font size 30px padding 25px 40px 25px 0px text
  • 在 pyes 和 elasticsearch 中按多个参数排序

    我可以通过一个sortpyes 中搜索查询的参数如下 s MatchAllQuery conn search query Search s indexes test sort score 但我需要传递一个额外的参数来对具有相同分数的文档进行
  • 在 Postman 中使用不同的数据多次运行请求仅运行一次

    我是 Postman 的新手 经常遇到一个我无法解决的问题 我尝试使用在预请求脚本上建立的数据数组多次运行相同的请求 但是 当我转到运行程序时 请求仅运行一次 而不是 3 次 预请求脚本 var uuids pm environment g
  • Scipy.optimize 不等式约束 - 考虑不等式的哪一边?

    我正在使用 scipy optimize 模块来查找最佳输入权重 以最小化我的输出 从我见过的例子来看 我们用单边方程定义约束 然后我们创建一个 不等式 类型的变量 我的问题是优化包如何知道约束中变量的总和是否需要小于 1 还是大于 1 d
  • 退出时关闭 Visual Studio 中的所有文件

    有没有办法在退出时关闭 Visual Studio 中的所有文件 或者 如果不可能 是否可以删除 Visual Studio 在退出时创建的用户项目文件 Windows gt 关闭所有文档文件 gt 退出 或者在项目关闭后手动删除 sou文
  • 如何从 COBOL 中的 COMP-3 字段读取 Java 中的日期?

    我正在尝试使用读取 COBOL 数据文件JRecord http sourceforge net projects jrecord source typ redirect 因为我有一个标题记录和详细记录 所以我用 SPLIT 01 LEVE
  • 当拉取请求更改时取消操作运行

    对于我的项目 我有一个相当长的 github 操作 当创建新的拉取请求时会触发该操作 这些是我使用的触发器 on pull request types opened ready for review labeled 此操作被定义为我的拉取请
  • 为什么 HttpApplication 构造函数被多次调用

    有人可以解释为什么自定义类的构造函数派生自Http应用程序应用程序启动时被调用多次 我的代码结构如下 My Globalglobal asax 中的类派生自定制应用程序 class The 定制应用程序类源自Http应用程序 class T
  • 如何从 CXF/JAX-RS 中的 JSON 响应中删除命名空间前缀?

    我有 CXF 使用 JAX RS 创建的以下响应 ns1 CustomerInformationResponse xsi type ns1 CustomerInformationResponse ns2 code SUCCESS ns1 c
  • 如何更改函数引用的类型?

    Java8 允许我使用方法声明作为任何接口的实现 只要它只包含一个方法 然而 一旦定义 类型就不能更改 My code import java util function IntConsumer public class A interfa
  • boost::asio::yield_context:意外的forced_unwind异常

    我正在尝试为 boost asio 编写自定义异步函数 如下所述here https stackoverflow com questions 24497881 boostasiospawn yield as callback 但是我得到了
  • 如何在 Android 10 中从服务启动 Activity

    我从服务开始活动直到 android P 但是从 android10 谷歌保留了一项限制 即活动不能从后台启动 https developer android com guide components activities backgrou
  • 使用连接字符串时如何设置 knex 连接 ssl 选项

    当我使用连接字符串初始化 knex 时 如何将连接的 ssl 属性设置为 true 同样如何将debug设置为true 我通常会传入一个连接对象 但在这种情况下 我必须使用环境变量中的连接字符串 var database client pg
  • 检测页面上是否显示警报或确认

    有没有办法使用 JavaScript 或 jQuery 来检测是否显示确认框或警报框 如果您想在以下情况下运行一些代码alert 火灾 你可以尝试这样的事情 我只在 Chrome 中进行了测试 所以我不确定浏览器是否支持 Example h
  • C++ 不会安装在 Netbeans 11.0 中

    我是编程初学者 想了解更多关于 C 的知识 我安装了 Netbeans 因为它说它支持 Java 我目前正在学校学习基础知识 和 C 我想出于个人兴趣学习 但是当我尝试创建一个新项目时 我找不到C 所以我按照教程并最终尝试安装该插件 问题是
  • 什么时候在 ThreadPoolExecutor 中指定单独的核心和最大池大小是个好主意?

    我试图理解为 Java 5 的 ThreadPoolExecutor 指定单独的核心和最大池大小的要点 我的理解是 线程数只有在队列已满时才会增加 这似乎有点晚了 至少对于较大的队列 难道我不乐意为任务分配更多数量的线程 在这种情况下我可能
  • 迷失在 NSButton 类型和替代图像中

    我想要一个NSButton带有图像和备用图像 按下按钮时应显示备用图像 我还想通过代码显示备用图像 调用类似 button setSelected YES 这是否可能无需与alternateImage用手财产 无需手动更改按钮的图像即可实现
  • Java:使用 SAXParser 拆分大型 XML 文件

    我正在尝试使用java将一个大的XML文件分割成更小的文件SAXParser 特别是维基百科转储 未压缩时大约有 28GB 我有一个Pagehandler扩展的类DefaultHandler private class PageHandle