Как добавить узел в существующий XML-документ

Я использую stax для анализа своего документа, вот фиктивный пример моего XML-документа:

<data>

<video>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</video>

<book id="1">
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>

<book id="n">
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>

//insert new node here

</data>

Как я могу вставить узел после n-й книги (где n - любое число). Благодарю вас


person London    schedule 13.07.2010    source источник
comment
Я бы использовал XSLT, чтобы заранее добавить узел. Работает ли это в вашей ситуации?   -  person mdma    schedule 14.07.2010
comment
@mdma на самом деле я не пытаюсь добавить этот узел как часть более широкой картины, после слов происходит что-то еще   -  person London    schedule 14.07.2010


Ответы (1)


Украсьте свой XMLEventReader на заводе с собственной реализацией, обеспечивающей ваши события в нужное время. Вы можете расширить EventReaderDelegate для этого. Вы бы поставили в очередь события, которые хотите вставить, подсчитали прочитанные элементы и предоставили их в нужное время.

Если вы используете XMLStreamReader, применяется тот же принцип, но есть еще несколько методов, о которых нужно позаботиться.

person McDowell    schedule 13.07.2010
comment
Я действительно не понимаю, о каких событиях вы говорите. Я просто хочу вставить узел в документ, если бы он был в конце или в начале файла, я бы превратил его в строку и добавил, но у меня есть ограничение узла, после которого я должен вставить другой узел. спасибо за ответ - person London; 14.07.2010
comment
@London - вы должны вставить узлы, возвращая события, созданные из файла XMLEventFactory. Если вы предоставите пример кода, показывающий, как вы используете StAX, будет проще предоставить соответствующие рекомендации. - person McDowell; 14.07.2010