У меня есть XML-файл, где некоторый sub отмечает (дочерние элементы узла) являются дополнительными. например.
<part>
<note>
</rest>
</note>
<note>
<pitch></pitch>
</note>
<note>
<pitch></pitch>
</note>
</part>
Но когда я считал XML-файлы тегами, это бросает NullPointerException - так как некоторые подтеги являются дополнительными (например, отдохните и беритесь за дело выше примера). Как я могу фильтровать это? Я не мог столкнуться ни с какими методами, чтобы найти, существует ли элемент конкретным именем тега. Даже если у меня есть условие проверить, ли getElementsByTagName ("имя тега"), метод не возвращает ПУСТОЙ УКАЗАТЕЛЬ - все еще, это входит в тело условия, и, очевидно, выдайте исключение. Как я могу разрешить это?
Код Java:
if(fstelm_Note.getElementsByTagName("rest")!=null){
if(fstelm_Note.getElementsByTagName("rest")==null){
break;
}
NodeList restElmLst = fstelm_Note.getElementsByTagName("rest");
Element restElm = (Element)restElmLst.item(0);
NodeList rest = restElm.getChildNodes();
String restVal = ((Node)rest.item(0)).getNodeValue().toString();
}else if(fstelm_Note.getElementsByTagName("note")!=null){
if(fstelm_Note.getElementsByTagName("note")==null){
break;
}
NodeList noteElmLst = fstelm_Note.getElementsByTagName("note");
Element noteElm = (Element)noteElmLst.item(0);
NodeList note = noteElm.getChildNodes();
String noteVal = ((Node)note.item(0)).getNodeValue().toString();
}
Любое понимание или предложения ценятся.Заранее спасибо.
Ваши требования крайне неясны, но я, скорее всего, использую пакет javax.xml.xpath
для синтаксического анализа XML-документа с помощью XML Path Language (XPath).
Взгляните на:
Но вы должны попытаться объяснить общую проблему, которую вы пытаетесь решить, а не конкретную проблему, с которой вы сталкиваетесь. Но делая это, 1. вы, вероятно, получите лучшие ответы и 2. текущий выбранный путь может быть не самым лучшим.
Возможно, ваши списки узлов не пустые, а не пустые. Можете ли вы попробовать изменить свой код таким образом и посмотреть, что произойдет?
NodeList restElmLst = fstelm_Note.getElementsByTagName("rest");
if (restElmLst != null && !restElmLst.isEmpty())
{
Element restElm = (Element)rests.item(0);
...
и т. Д. (Двойная проверка синтаксиса и т. Д., Поскольку я не работаю перед компилятором.)