Мне нужно обработать множество файлов XML в формате MARC.Файлы содержат разные поля, а иногда поля могут отсутствовать.В этом конкретном случае авторское поле не существует, и его следует сохранить как пустую строку.
Как я могу проверить, существует ли узел, прежде чем пытаться получить доступ к его значению?
Если я пытаюсь получить доступ к несуществующему узлу, программа выдает исключение NullPointerException.
// xml document is valid and existing nodes can be accessed without a problem
final Document doc = record.getDocument();
String author = "";
if (doc != null) {
// The next line throws a NullPointerException
author = doc.selectSingleNode("//mx:datafield[@tag='100']/mx:subfield[@code='a']").getText();
}
Я попытался создать список с узлами, а затем проверить, не является ли он пустым.Однако, даже если поле не существует в файле xml, список узлов по-прежнему содержит один элемент.
String xpath = "//mx:datafield[@tag='100']/mx:subfield[@code='a']";
List<Node> nodes = doc.selectNodes(xpath); //contains one element