Присоединение к XML с XMLStreamWriter - PullRequest
1 голос
/ 10 января 2009

В основном приложение записывает содержимое коллекции в XML. Я использую XMLStreamWriter (XMLOutputFactory.newInstance().createXMLStreamWriter(...)) для этой цели.

Прекрасно работает, за исключением того, что я не могу понять, как добавить данные в существующий файл. Не очень нравится идея сначала прочитать все это, добавить данные в память и затем перезаписать. Или это единственный способ?

Ответы [ 3 ]

3 голосов
/ 10 января 2009

Простое добавление в файл XML приведет к неправильному формату XML. Вы должны построить DOM и прикрепить, какие новые элементы вам нужны.

2 голосов
/ 10 января 2009

Если вы добавляете элемент верхнего уровня, вы, вероятно, можете делать то, что хотите. например, если у вас есть этот файл:

<some_element>
  <nested_element>
    ...
  </nested_element>
</some_element>

Скорее всего, вы можете добавить другой элемент some_element.

Однако вы явно ошибаетесь, если есть элемент внешнего уровня, и вам нужно добавить элемент внутренний -уровень. Например, предположим, что вы хотите добавить элемент some_element в этот файл:

<data>
  <some_element>
    <nested_element>
      ...
    </nested_element>
  </some_element>
</data>

В общем, вам гораздо лучше переписать документ, а затем переписать его. Если он маленький, используйте парсер на основе DOM; это легче. Если файл большой, используйте SAX-файл.

1 голос
/ 10 января 2009

Другой подход состоит в том, чтобы создать новый XML-файл и затем объединить его с предыдущим с помощью XSLT-преобразований . Для применения таблиц стилей XSLT вы должны использовать Java XML Transformation API .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...