#java #xml #jdom
#java #xml #jdom
Вопрос:
Позвольте мне сначала показать вам структуру xml:
<config>
<engine>
<eid>1</eid>
<somechild>text</somechild>
<somemodechild>
<subchild>subchbild</subchild>
<somemorechild>
</engine>
<eid>1</eid>
<somechild>text</somechild>
<somemodechild>
<subchild>subchbild</subchild>
<somemorechild>
</engine>
<engine>
<eid>1</eid>
<somechild>text</somechild>
<somemodechild>
<subchild>subchbild</subchild>
<somemorechild>
</engine>
</engine>
<eid>1</eid>
<somechild>text</somechild>
<somemodechild>
<subchild>subchbild</subchild>
<somemorechild>
</engine>
<engine>
<eid>1</eid>
<somechild>text</somechild>
<somemodechild>
<subchild>subchbild</subchild>
<somemorechild>
</engine>
</config>
Здесь <config>
находится корневой элемент. Мне нужно создать графический интерфейс для редактирования xml-элемента. Я сделал это, используя JSP, и создал графический интерфейс для каждого из них <engine>
на одной странице, чтобы каждый пользователь мог редактировать определенные <engine>
, а затем сохранять <config>
элементы, и чтобы сохранить изменения в этом конкретном <engine>
теге, я использую eid для выделения конкретного <engine>
.
Теперь я хочу переписать конкретный <engine>
редактируемый файл в отдельный xml. Как я могу достичь этого с помощью jdom?
Комментарии:
1. Смотрите это
Ответ №1:
Не уверен, правильно ли я понимаю ваши требования: у вас есть xml-файл (файл A), указанный выше, как указано выше, и другой XML-файл (файл B), содержащий только один узел ядра.
Если у вас есть уникальный идентификатор (eid?) в файле A, проанализируйте его в своем DOM, а затем замените узел, где eid совпадает с eid в файле B.
Чтобы найти движок в файле A, который соответствует eid в файле B, вы могли бы использовать XPath.
Node aEID = xp.evaluate("/config/engine[eid='3']");
Node bEID = docB.getRoot();
затем вы удалили бы aEID из своего первого DOM
docA.remove(aEID);
и добавьте bEID
docA.getRoot().add(bEID);
(приведенный выше код не предназначен для компиляции)