小编典典
我还将打印出结果an2.getNodeName()以用于调试。我的猜测是您的树爬网代码没有爬到您认为是的节点上。由于没有检查代码中的节点名称,这种怀疑得到了加强。
除此之外,Node的javadoc定义“
getNodeValue()”以为Element类型的Node返回null。因此,您确实应该使用getTextContent()。我不确定为什么不给您想要的文字。
也许迭代标签节点的子节点,看看那里有什么类型?
尝试了这段代码,它对我有用:
String xml = "\n" +
" foobar\n" +
" foobar2\n" +
"";
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
ByteArrayInputStream bis = new ByteArrayInputStream(xml.getBytes());
Document doc = db.parse(bis);
Node n = doc.getFirstChild();
NodeList nl = n.getChildNodes();
Node an,an2;
for (int i=0; i < nl.getLength(); i++) {
an = nl.item(i);
if(an.getNodeType()==Node.ELEMENT_NODE) {
NodeList nl2 = an.getChildNodes();
for(int i2=0; i2
an2 = nl2.item(i2);
// DEBUG PRINTS
System.out.println(an2.getNodeName() + ": type (" + an2.getNodeType() + "):");
if(an2.hasChildNodes()) System.out.println(an2.getFirstChild().getTextContent());
if(an2.hasChildNodes()) System.out.println(an2.getFirstChild().getNodeValue());
System.out.println(an2.getTextContent());
System.out.println(an2.getNodeValue());
}
}
}
输出为:
#text: type (3): foobar foobar
#text: type (3): foobar2 foobar2
2020-09-08