создать точную копию XML-файла, который читается с помощью SAX?

#java #xml #sax

#java #xml #sax

Вопрос:

Возможно ли в Java создать точную копию XML-файла, который считывается с помощью SAX? По сути, используя методы startElement, characters, endElement для чтения исходного файла. Хотя я ценю любую готовность помочь, пожалуйста, не отклоняйтесь от этого первоначального вопроса или ответа, предлагая другой подход к чтению файла; например, меня не интересует DOM. Спасибо!

Комментарии:

1. Как насчет этого: download.oracle.com/javaee/1.4/tutorial/doc/JAXPSAX3.html

Ответ №1:

Нет, я не верю, что SAX обязательно позволит вам создать eaxct копию файла.

Например, я не верю, что вы смогли бы определить разницу между:

 <foo>3 > 1</foo>
  

и

 <foo>3 amp;> 1</foo>
  

В обоих случаях, я полагаю, вам будет предоставлена строка, содержащая символы «3 > 1» без какого-либо указания на то, был ли > экранирован.

Вероятно, вы могли бы создать XML-эквивалентную копию исходного файла, но это не то, о чем вы спрашивали, поэтому я не буду вдаваться в подробности.

Ответ №2:

Вы могли бы использовать XmlWriter от Дэвида Меггинсона, находящийся в общественном достоянии (фильтр SAX). от Дэвида Меггинсона. Это доступно здесь, и для загрузки есть исходный код и примеры.

(Примечание. вывод будет точным логическим соответствием входным данным, создание точного лексического соответствия в общем случае невозможно, поскольку соответствующие XML-процессоры теряют некоторые лексические особенности входных данных, например, пробелы в тегах).