2016-11-27 4 views
0

Получение значения тд элемента в HtmlUnit

<td> 
 
    <span>hi</span> 
 
    <a>re</a> 
 
    hello 
 
</td>
У меня структуру элемента DOM, как показано выше. Используя htmlunit, я хочу извлечь только значение «hello», учитывая, что у меня есть объект HtmlElement, относящийся к узлу «td». Я пробовал использовать getTextContent(), но он возвращает «findhello», который я не хочу.

ответ

1

Глядя на документации, getTextContent ясно говорит, что возвращает текст элемента и его потомков, и я не вижу никакого другого способа вернуть только сумму текстовых узлов, поэтому я думаю, что вам нужно петля. Например, предполагая, что element относится к td элементу:

StringBuffer sb = new StringBuffer(/*some appropriate size*/); 
for (DomNode n : element.getChildNodes()) { 
    if (n.getNodeType() == Node.TEXT_NODE) { 
     sb.append(n.getTextContent()); 
    } 
} 
String text = sb.toString(); 

Заметим, что сумма текстовых узлов в структуре вы цитируемым не просто "hello", он будет иметь пробелы до и после этого , Если вы просто хотите "hello", вам нужно обрезать это.

+1

Я думаю, 'element.normalize()', за которым следует 'element.getLastChild(). AsText()' тоже должен сделать трюк. Но я не проверял его, чтобы убедиться. –

+0

@JBNizet: Возможно, для этой * конкретной * структуры, так как в этом конкретном случае это всего лишь один текстовый узел, который им интересен. –

 Смежные вопросы

  • Нет связанных вопросов^_^