Я пытаюсь создать java-программу, которая разбивает выбранный файл XML.XML-расщепление BIG-файла с использованием Java
XML выборка данных файла:
<EmployeeDetails>
<Employee>
<FirstName>Ben</FirstName>
</Employee>
<Employee>
<FirstName>George</FirstName>
</Employee>
<Employee>
<FirstName>Cling</FirstName>
</Employee>
<EmployeeDetails>
И так, у меня есть этот 250Mb XML файл муравей всегда боль в заднице, чтобы открыть его внешнюю программу и вручную разбить его, чтобы иметь возможность быть читаемыми с другие (не все ноутбук/настольный компьютер может открыть такой большой файл). Поэтому я решил создать программу Java, которая будет иметь эту функцию: -Выберите файл XML (уже сделано) -Split-файл на основе # тегов, например. (В текущем файле есть 100 тыс. Тегов. Я спрошу пользователя программы о том, как Сотрудник, которого он/она хочет для разбитого файла (например, 10k на файл) -Split файл (уже сделано)
Я просто хочу попросить о помощи, как я могу выполнить вторую задачу, уже в 3 -4 дня проверяя, как же я могу это сделать, или это даже возможно (на мой взгляд, конечно, есть).
Любой ответ будет оценен.
Приветствия, Grimm.
Для Java у вас есть два варианта - DOM (объектная модель документа), где весь файл считывается в память. Это будет немного проще реализовать, но потребует разумного объема памяти - JVM 1 ГБ должен быть достаточным, если программа не делает ничего другого. Модель SAX (потоковая передача) может обрабатывать файл, даже если он стал 100 ГБ - он читает файл понемногу и имеет обратные вызовы, когда, например, он видит новый тег. [Этот пост] (http://stackoverflow.com/questions/6828703/what-is-the-difference-between-sax-and-dom) идет немного подробнее. – stdunbar
У вас также есть третий вариант: выполните преобразование XSLT. –
И четвертый выбор: StAX. – biziclop