Как разбить большие xml файлы на маленькие кусочки (Small Xml Files) с помощью StAX In Java - PullRequest
1 голос
/ 29 января 2020

У меня есть XML из 5-ти Suppllier'ов. Я хочу разбить этот большой файл на 2-х Suppllier'а, каждый из которых начальный тег File равен , а конечный тег like это у меня есть 5 Suppllier's ...

я красный несколько статей, если размер файла большой go с парсером StaX мой файл (> 6GB) так Как я могу разбить мой файл образца на несколько файлов ..

Вот мой образец XML Файл .....

<?xml version="1.0" encoding="UTF-8"?>
<Shop xmlns="http://www.shpAddress.com">
  <tab:Product xmlns:tab="http://www.productName.com">
    <tab:Suppllier>
      <col:Items xmlns:col="http://www.Items.com">
        <col:Delivery>
          <Prize xsi:nil="true" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>              
          <LastModifiedDate xmlns="">2020-01-28</LastModifiedDate>
        </col:Delivery>
      </col:Items>
     </tab:Suppllier>
     <tab:Suppllier>
      <col:Items xmlns:col="http://www.Items.com">
        <col:Delivery>
          <Prize xsi:nil="true" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>          
          <LastModifiedDate xmlns="">2021-02-28</LastModifiedDate>
        </col:Delivery>
      </col:Items>
     </tab:Suppllier>
     <tab:Suppllier>
      <col:Items xmlns:col="http://www.Items.com">
        <col:Delivery>
          <Prize xsi:nil="true" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>          
          <LastModifiedDate xmlns="">2022-02-28</LastModifiedDate>
        </col:Delivery>
      </col:Items>
     </tab:Suppllier>
     <tab:Suppllier>
      <col:Items xmlns:col="http://www.Items.com">
        <col:Delivery>
          <Prize xsi:nil="true" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>          
          <LastModifiedDate xmlns="">2023-03-28</LastModifiedDate>
        </col:Delivery>
      </col:Items>
     </tab:Suppllier>
     <tab:Suppllier>
      <col:Items xmlns:col="http://www.Items.com">
        <col:Delivery>
          <Prize xsi:nil="true" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>          
          <LastModifiedDate xmlns="">2024-04-28+05:30</LastModifiedDate>
        </col:Delivery>
      </col:Items>
     </tab:Suppllier>
  </tab:Product>
</Shop>

1 Ответ

0 голосов
/ 30 января 2020

Ожидается куча стандартного кода со StaX. Мы надеемся, что можно ограничить его в 2 раза с помощью пары SAXParser / XMLOutputFactory.

Если формат XML достаточно стабилен, есть другой подход, который выглядит намного проще. Тривиальное регулярное выражение может выбирать текст между тегами <tab:Suppllier> и </tab:Suppllier>. Другие стабильные части (в самом начале и конце XML) могут быть жестко запрограммированы и записаны в новые частичные файлы.

...