найдите, существует ли элемент конкретным именем тега в XML

У меня есть 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();
}

Любое понимание или предложения ценятся.Заранее спасибо.

5
задан Rob 3 August 2017 в 04:41
поделиться

2 ответа

Ваши требования крайне неясны, но я, скорее всего, использую пакет javax.xml.xpath для синтаксического анализа XML-документа с помощью XML Path Language (XPath).

Взгляните на:

Но вы должны попытаться объяснить общую проблему, которую вы пытаетесь решить, а не конкретную проблему, с которой вы сталкиваетесь. Но делая это, 1. вы, вероятно, получите лучшие ответы и 2. текущий выбранный путь может быть не самым лучшим.

1
ответ дан 18 December 2019 в 14:41
поделиться

Возможно, ваши списки узлов не пустые, а не пустые. Можете ли вы попробовать изменить свой код таким образом и посмотреть, что произойдет?

NodeList restElmLst = fstelm_Note.getElementsByTagName("rest");
if (restElmLst != null && !restElmLst.isEmpty())
{
    Element restElm = (Element)rests.item(0);
...

и т. Д. (Двойная проверка синтаксиса и т. Д., Поскольку я не работаю перед компилятором.)

0
ответ дан 18 December 2019 в 14:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: