Имя узла TextNode не отображается правильно при разборе JAVA xml - PullRequest
0 голосов
/ 07 апреля 2011

Я анализирую XML-документ в JavaBean, используя org.w3c.dom api.

Если узел является элементом ElementNode, то метод node.getNodeName () возвращает тэг узла.

Но если я использую его на дочернем узле с текстовым содержимым, он не возвращает тэг.Но он возвращает nodeType, такой как #TextNode или #CDATA.Но я также хочу получить TagName для ChildNode.Я пытался

node.getNodeName();
node.getNodeValue();
node.getTextContent();

Ни один из вышеперечисленных методов не возвращает тэг дочернего узла, который имеет Textcontent.Какой правильный метод?

Ответы [ 2 ]

1 голос
/ 07 апреля 2011

Если тип узла возвращается как CDATA или TextNode, то узел, на который вы смотрите , представляет собой текстовые данные - это не элемент , содержащий текстовые данные. Поэтому у этого узла нет имени тега - это не тег. Вы должны запросить его для родительского узла (который будет элементом) и найти имя этого.

Если это не поможет, пожалуйста, опубликуйте пример кода (в идеале, короткое, но завершенное консольное приложение, которое мы можем копировать, вставлять, компилировать и запускать), XML, с которым вы его запускаете, ожидаемая и фактическая выработка.

0 голосов
/ 07 апреля 2011

Дважды проверьте документ XML и ваш код.Вы на самом деле смотрите на Текст Узел или CDATA-секцию , но не на Элемент .

Вы можете проверить это, выполнив

if (childnode.getType != Node.ELEMENT_NODE) {
  System.out.println("Ooops, navigation error, need to turn around");
}

или на мгновение добавив отладочный код

System.out.println(childnode.getClass().getName());
System.out.println(childnode.getParentNode().getNodeName());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...