Хороший вопрос. Есть несколько способов запросить документ XML с помощью Java:
a) Разобрать документ XML в Document и использовать getElementsByTagName для извлечения нужных узлов. Это ваш нынешний подход. Это нормально для простых документов, но плохо масштабируется, потому что класс Document ничего не знает о структуре документа. Метод getElementsByTagName () должен предполагать, что любой тег, который он найдет , может встречаться более одного раза. Но вы можете исправить это ...
б) Создайте Java классов для вашей конкретной c структуры документа. Для этого у вас должна быть схема XML, которая описывает структуру вашего XML. Затем вы можете использовать JAXB для генерации классов Java для обработки вашего заданного формата c XML. В вашем примере сгенерированный код будет знать (из схемы), что в каждом теге FEATURE есть ровно один экземпляр NAME и VALUE. Методы получения для NAME и VALUE будут возвращать один узел, поэтому вашему коду не нужно будет использовать массивы для элементов с одним вхождением. См. https://docs.oracle.com/javase/tutorial/jaxb/intro/index.html для получения дополнительной информации.
c) Используйте поддержку XPath, встроенную в Java, чтобы извлечь именно те узлы, которые вам нужны. XPath разработан для обработки XML документов и очень мощный и гибкий. Подробнее см. Как читать XML с использованием XPath в Java.
Вариант а) почти никогда не используется для обработки нетривиальных документов XML. И b), и c) очень распространены.