获取node中的值用getTextContent()方法出错,紧急!!!

麻烦的书虫 2010-05-15 10:41:39
xml文件内容:
<?xml version="1.0" encoding="GB2312"?>
<employees>
<employee>
<name>丁宏亮</name>
<sex>m</sex>
<age>30</age>
</employee>
<employee>
<name>丁宏亮</name>
<sex>m</sex>
<age>30</age>
</employee>
</employees>


java代码:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class DomDemo {
private Document document;
private String fileName;

public void init() {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
this.document = builder.newDocument();
} catch (ParserConfigurationException e) {
System.out.println(e.getMessage());
}
}
public void parserXml(String fileName) {
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); //document创建工厂
DocumentBuilder db = dbf.newDocumentBuilder(); //创建document对象
Document document = db.parse(fileName); //将指定路径下的xml解析到document对象中
NodeList employees = document.getChildNodes(); //获取文档的根节点
System.out.println(employees.getLength()+"!!!");
System.out.println(employees.item(0).getNodeName()+"!!!");
for (int i = 0; i < employees.getLength(); i++) {
Node employee = employees.item(i);
NodeList employeeInfo = employee.getChildNodes();

for (int j = 0; j < employeeInfo.getLength(); j++) {
Node node = employeeInfo.item(j);
NodeList employeeMeta = node.getChildNodes();
System.out.println(employeeMeta.getLength());

for (int k = 0; k < employeeMeta.getLength(); k++) {
if(!employeeMeta.item(k).getNodeName().equals("#text")){
System.out.print(employeeMeta.item(k).getNodeName());
System.out.println( employeeMeta.item(k).getTextContent()); //一到此处就报错,我不知道为什么,?
}
}
}
}
System.out.println("解析完毕");
} catch (FileNotFoundException e) {
System.out.println(e.getMessage());
} catch (ParserConfigurationException e) {
System.out.println(e.getMessage());
} catch (SAXException e) {
System.out.println(e.getMessage());
} catch (IOException e) {
System.out.println(e.getMessage());
}
}

public static void main(String[] args) {
DomDemo dDemo=new DomDemo();
dDemo.init();
dDemo.parserXml("f:\\teacher.xml");
}
}

报的错是:
name:Exception in thread "main" java.lang.AbstractMethodError: org.apache.crimson.tree.ElementNode.getTextContent()Ljava/lang/String;
at testXML.DomDemo.parserXml(DomDemo.java:115)
at testXML.DomDemo.main(DomDemo.java:135)
错的提示还能理解,就是知道employeeMeta.item(k).getTextContent()这错个啥?
同时还有其他方法获取节点中的值?请高手们帮帮忙!
...全文
741 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧