2014-01-05 111 views
0

我想通过HtmlUnit从网页中提取一些数据。这些数据是我的一些学生的名字和姓氏。该数据的组织是这样的:HtmlUnit:从<span>中提取文本<a>标记

<td width='20%' align='left' valign='top' class='textstyle1'> 
<a href='page.html' name='specName' class='seriousClass'>Secondname</a>, 
<span class='textstyle2'>Firstname</span></td><td width='15%' align='center' 
valign='top' class='textstyle2'>&nbsp;</td> 

此刻,我只能提取secondname这样的:

List studentsFieldList = page2.getElementsByName("specName"); 
for (int i = 0; i<studentsFieldList.size(); i++){ 
String lastName  = ((Node)studentsFieldList.get(i)).getFirstChild().getNodeValue(); 
} 

我不能得到的名字了。我尝试使用

String firstName  = ((Node)studentsFieldList.get(i)).getPreviousSibling().getFirstChild.getNodeValue(); 

但它不起作用。字符串是空的,尽管调试器在studentsFieldList对象中显示了正确的值。

任何帮助将不胜感激。

回答

0

我能够自己解决它。问题是,尽管IDE的代码完成告诉您,您可以访问NodeList的方法,但不能访问比第一个子节点更深的方法。

当我想要得到的字符串的firstName在上面的例子中,我不得不从节点列表中提取女儿节点:

Node firstNameNode = (Node)studentsFieldList.get(i)).getPreviousSiblin(); 
String firstname = firstNameNode.getFirstChild().getNodeValue();