Как перебирать xml с помощью javascript при изменении документа?

Как я могу перебирать список узлов xml (tag="items") и при этом вставлять новый узел в определенное место, в этом случае при изменении значения chileNode (tag="rowNum")? Вот пример, показывающий мой ввод и желаемый результат:

Запуск xml:

<items>
  <item>
     <rowNum>1</rowNum>
     <description>some text</description>
  </item>
  <item>
     <rowNum>1</rowNum>
     <description>some more text</description>
  </item>
  <item>
     <rowNum>2</rowNum>
     <description>some text</description>
  </item>
</items>

Желаемый результат:

<items>
  <item>
     <rowNum>1</rowNum>
     <description>some text</description>
  </item>
  <item>
     <rowNum>1</rowNum>
     <description>some more text</description>
  </item>
  <item>
     <rowNum>1</rowNum>
     <description>last row 1 item</description>
  </item>
  <item>
     <rowNum>2</rowNum>
     <description>some text</description>
  </item>
  <item>
     <rowNum>2</rowNum>
     <description>last row 2 item</description>
  </item>
</items>

person Russ E    schedule 26.09.2012    source источник


Ответы (1)


  1. создайте переменную для rownum с начальным значением, например, -1
  2. цикл по элементам элемента, но начинайте с конца
  3. проверьте, отличается ли значение переменной от содержимого элемента rowNum. Если да, установите значение переменной в содержимое элемента rowNum и вставьте новый узел перед nextSibling текущего элемента элемента.

Демонстрация: http://jsfiddle.net/doktormolle/n5wUC/

person Dr.Molle    schedule 26.09.2012
comment
Спасибо доктор Молле! Ваше решение выглядит великолепно. Я нахожусь в процессе переноса его на java, где я планирую запустить его в скрипте Groovy. Еще раз спасибо за ваше быстрое решение. - person Russ E; 27.09.2012
comment
Я просто хотел поделиться тем, что успешно реализовал вашу логику в своем скрипте Java Groovy. Спасибо еще раз! - person Russ E; 04.10.2012