久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

如何通過 StAX 修改一個巨大的 XML 文件?

How to modify a huge XML file by StAX?(如何通過 StAX 修改一個巨大的 XML 文件?)
本文介紹了如何通過 StAX 修改一個巨大的 XML 文件?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我有一個巨大的 XML (~2GB),我需要添加新元素并修改舊元素.例如,我有:

I have a huge XML (~2GB) and I need to add new Elements and modify the old ones. For example, I have:

<books>
    <book>....</book>
    ...
    <book>....</book>
</books>

又想得到:

<books>
   <book>
      <index></index>
      ....
   </book>
   ...
   <book>
      <index></index>
      ....
   </book>
</books>

我使用了以下代碼:

XMLInputFactory inFactory = XMLInputFactory.newInstance();
XMLEventReader eventReader = inFactory.createXMLEventReader(new FileInputStream(file));
XMLOutputFactory factory = XMLOutputFactory.newInstance();
XMLStreamWriter writer = factory.createXMLStreamWriter(new FileWriter(file, true));
while (eventReader.hasNext()) {
   XMLEvent event = eventReader.nextEvent();
   if (event.getEventType() == XMLEvent.START_ELEMENT) {
      if (event.asStartElement().getName().toString().equalsIgnoreCase("book")) {
          writer.writeStartElement("index");
          writer.writeEndElement();
       }
    }
}
writer.close();

但結果如下:

<books>
   <book>....</book>
   ....
   <book>....</book>
</books><index></index>

有什么想法嗎?

推薦答案

試試這個

    XMLInputFactory inFactory = XMLInputFactory.newInstance();
    XMLEventReader eventReader = inFactory.createXMLEventReader(new FileInputStream("1.xml"));
    XMLOutputFactory factory = XMLOutputFactory.newInstance();
    XMLEventWriter writer = factory.createXMLEventWriter(new FileWriter(file));
    XMLEventFactory eventFactory = XMLEventFactory.newInstance();
    while (eventReader.hasNext()) {
        XMLEvent event = eventReader.nextEvent();
        writer.add(event);
        if (event.getEventType() == XMLEvent.START_ELEMENT) {
            if (event.asStartElement().getName().toString().equalsIgnoreCase("book")) {
                writer.add(eventFactory.createStartElement("", null, "index"));
                writer.add(eventFactory.createEndElement("", null, "index"));
            }
        }
    }
    writer.close();

注意事項

new FileWriter(file, true) 附加到文件末尾,你幾乎不需要它

new FileWriter(file, true) is appending to the end of the file, you hardly really need it

equalsIgnoreCase("book") 是個壞主意,因為 XML 區分大小寫

equalsIgnoreCase("book") is bad idea because XML is case-sensitive

這篇關于如何通過 StAX 修改一個巨大的 XML 文件?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Upload progress listener not fired (Google drive API)(上傳進度偵聽器未觸發(Google 驅動器 API))
Save file in specific folder with Google Drive SDK(使用 Google Drive SDK 將文件保存在特定文件夾中)
Google Drive Android API - Invalid DriveId and Null ResourceId(Google Drive Android API - 無效的 DriveId 和 Null ResourceId)
Google drive api services account view uploaded files to google drive using java(谷歌驅動api服務賬戶查看上傳文件到谷歌驅動使用java)
Google Drive service account returns 403 usageLimits(Google Drive 服務帳號返回 403 usageLimits)
com.google.api.client.json.jackson.JacksonFactory; missing in Google Drive example(com.google.api.client.json.jackson.JacksonFactory;Google Drive 示例中缺少)
主站蜘蛛池模板: 午夜精品久久久 | 免费观看国产视频在线 | 男人天堂网址 | 911网站大全在线观看 | 日本午夜免费福利视频 | 中文字幕一区二区三区在线观看 | 中国xxxx性xxxx产国 | 国产欧美精品一区二区色综合朱莉 | 一区二区三区四区国产精品 | 久久久久国产一区二区三区 | 久久精品黄色 | 一区二区日韩 | 伊人一区 | 久久久婷 | 欧美黑人一级爽快片淫片高清 | 欧美一区二区三区视频在线播放 | 亚洲午夜精品 | 一色一黄视频 | 成人午夜高清 | yiren22综合网成人 | 久久精品亚洲精品国产欧美kt∨ | 国产精品久久久久久久午夜 | 国产精品久久久爽爽爽麻豆色哟哟 | 91麻豆精品国产91久久久更新资源速度超快 | 免费日韩网站 | 日韩精品视频一区二区三区 | 日本亚洲精品成人欧美一区 | 99亚洲 | 久久国产精品-久久精品 | 自拍在线 | 成人午夜精品一区二区三区 | 国内自拍第一页 | 国产午夜精品福利 | 久久久久久99 | 黄色网址在线免费观看 | 日韩精品在线播放 | 日韩中文欧美 | 国产精品欧美一区二区三区 | 亚洲高清免费观看 | 懂色av一区二区三区在线播放 | 亚洲成人日韩 |