Я предполагаю, что вы используете парсер DOM.
Первый дочерний элемент узла <textlist>
- это не первый узел <text>
, а необработанный текст, содержащий пробельные символы и возврат каретки между концом <textlist>
и началом <text>
. Вывод следующего фрагмента (с использованием org.w3c.dom. * И javax.xml.parsers. *)
Node grandpa = document.getElementsByTagName("textlist").item(0);
Node daddy = grandpa.getFirstChild();
while (daddy != null) {
System.out.println(">>> " + daddy.getNodeName());
Node child = daddy.getFirstChild();
if (child != null)
System.out.println(">>>>>>>> " + child.getTextContent());
daddy = daddy.getNextSibling();
}
показывает, что <textlist>
имеет пять дочерних элементов: два элемента <text>
и три необработанных фрагмента текста до, между и после них.
>>> #text
>>> text
>>>>>>>> Lore1
>>> #text
>>> text
>>>>>>>> Lore2
>>> #text
При таком анализе XML легко не заметить, что структура DOM-дерева может быть сложной. Вы можете быстро закончить итерацию по NodeList в неправильном поколении, и тогда вы получите нулевые значения, в которых вы ожидаете братьев и сестер. Это одна из причин, почему люди придумали все виды xml-to-java вещей, от доморощенных классов XMLHelper до выражений XPath, от Digester до JAXB, поэтому вам нужно переходить на уровень DOM только тогда, когда это абсолютно необходимо.