Как получить только текстовое содержимое узла верхнего уровня с помощью getTextContent () - PullRequest
4 голосов
/ 14 января 2011

Я пытаюсь получить только текст верхнего уровня, а не дочерний текст.Итак, у меня есть следующий xml:

<job>
  text1
  <input> text2 </input>
</job>

, и я хотел бы получить только родительский (text1) текст.Так что в этом примере я бы сделал

node.getTextContent();

и получил бы text1, а не text1text2, который getTextContent в настоящее время дает мне.Теперь я прочитал man pages и знаю, что они говорят, что getTextContent возвращает объединенную строку всех потомков с родителем.Но я просто хотел бы текст от родителей.Другой способ, которым я думал об этом, - попытаться изолировать родителя от потомков и выполнить команду getTextContent только для родителя, но я не знаю, насколько это возможно.

Любая помощь будет признательна

Спасибо, Джош

Ответы [ 6 ]

2 голосов
/ 14 января 2011

Работает ли getChildNodes ()? если это так, вы можете перебрать все childNodes и вызвать getContent () для них, и вычесть это из вашего node.getContent (). Это приведет к тому, что текст не является частью подузла.

Лучший ответ: не смешивайте текст с подузлами. Мне пришлось перепроверить, что предоставленный вами xml законен, но это меня пугает.

2 голосов
/ 14 января 2011

Переберите все дочерние узлы и объедините те, которые являются текстовыми узлами. Либо это, либо XPath.

1 голос
/ 16 мая 2012

Вместо этого

node.getTextContent();

используйте это:

if (node.getFirstNode() != null) 
{
  node.getFirstChild().getTextContent();
}
1 голос
/ 14 января 2011

Я думаю, что вы, вероятно, могли бы использовать xpath для job / text (), это может быть проще, чем навигация по модели DOM.

Если вы можете избежать смешанного контента, работать с ним немного затруднительно,

0 голосов
/ 13 апреля 2016

node.firstChild.textContent.trim();

0 голосов
/ 20 января 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...