Мой вопрос: Как я могу получить элементы непосредственно под определенным родительским элементом, когда есть другие элементы с тем же именем, что и "внук" родительского элемента.
Я использую Java DOM-библиотеку для анализа XML Элементов, и у меня возникают проблемы, Здесь несколько (небольшая часть) используемого мной xml:
<notifications>
<notification>
<groups>
<group name="zip-group.zip" zip="true">
<file location="C:\valid\directory\" />
<file location="C:\another\valid\file.doc" />
<file location="C:\valid\file\here.txt" />
</group>
</groups>
<file location="C:\valid\file.txt" />
<file location="C:\valid\file.xml" />
<file location="C:\valid\file.doc" />
</notification>
</notifications>
Как вы можете видеть, есть два места, в которые вы можете поместить элемент <file>
. Либо в группах, либо за пределами групп. Я действительно хочу, чтобы он был структурирован таким образом, потому что он более удобен для пользователя.
Теперь, когда я вызываю notificationElement.getElementsByTagName("file");
, он дает мне все элементы <file>
, в том числе элементы под элементом <group>
. Я обрабатываю каждый из этих файлов по-разному, поэтому эта функциональность нежелательна.
Я подумал о двух решениях:
- Получите родительский элемент элемента файла и обработайте его соответствующим образом (в зависимости от того, является ли он
<notification>
или<group>
. - Переименуйте второй элемент
<file>
, чтобы избежать путаницы.
Ни одно из этих решений не так желательно, как просто оставляя вещи так, как они есть, и получает только те элементы <file>
, которые являются прямыми дочерними элементами <notification>
.
Я открыт для IMPO комментариев и ответов о "наилучшем" способе сделать это, но меня действительно интересуют решения DOM, потому что это то, что использует весь этот проект. Спасибо.