Вы спрашиваете, почему это так глубоко вложено. Сначала я отвечу на это, а затем предложу три других подхода, которые вы также можете рассмотреть для работы с xml в java.
Почему оно так вложено
Element.getElementsByTagName()
возвращает NodeList, который содержит 0-n элементов. Вы знаете, что у вас есть только один, но xml - нет. Поэтому вам нужно сказать: дайте мне первый элемент этого списка (.item(0)
).
Теперь у вас есть элемент point
, но вы хотите иметь его содержимое. Вы получаете доступ к контенту как дочерний, но опять же: может быть несколько дочерних элементов (как и другие теги), поэтому вам снова нужно указать, какой элемент.
Альтернативные подходы
Доступ к содержимому в виде текстового содержимого: element.getElementsByTagName("georss:point").item(0).getTextContent();
Использование Xpath:
XPathFactory xPathfactory = XPathFactory.newInstance();
XPath xpath = xPathfactory.newXPath();
XPathExpression expr = xpath.compile("//*[local-name()='point']");
String evaluate = expr.evaluate(doc);
System.out.println(evaluate);
Пожалуйста, обратите внимание, что xpath //*[local-name()='point']
не лучший способ. Вы должны работать с пространствами имен, которые потребуют еще немного кода.
Используйте xml для отображения bean-компонентов, например, с
JAXB Вы должны действительно рассмотреть этот подход, поскольку он в основном позволяет вам иметь объекты Pojo со всем содержимым xml (например, возраст, величина, ...) и просто преобразовать xml в объект, подобный этому:
public class Entry{
private String id;
private String title;
...
private String point;
private String age;
private String magnitude;
...
Надеюсь, это поможет.