报错如下:
org.dom4j.DocumentException: Error on line 1 of document file:///D:/eclipse/workspace/dom4jDemo/xml/200509051048.xml : 缺少文件根组件。 Nested exception: 缺少文件根组件。
at org.dom4j.io.SAXReader.read(SAXReader.java:482)
at org.dom4j.io.SAXReader.read(SAXReader.java:264)
at com.jerrymouse.dom4j.demo.Test.readXMLData(Test.java:46)
at com.jerrymouse.dom4j.demo.Test.main(Test.java:36)
Nested exception: 
org.xml.sax.SAXParseException: 缺少文件根组件。
at org.apache.crimson.parser.Parser2.fatal(Parser2.java:3376)
at org.apache.crimson.parser.Parser2.fatal(Parser2.java:3364)
at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:668)
at org.apache.crimson.parser.Parser2.parse(Parser2.java:337)
at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:448)
at org.dom4j.io.SAXReader.read(SAXReader.java:465)
at org.dom4j.io.SAXReader.read(SAXReader.java:264)
at com.jerrymouse.dom4j.demo.Test.readXMLData(Test.java:46)
at com.jerrymouse.dom4j.demo.Test.main(Test.java:36)
Nested exception: org.xml.sax.SAXParseException: 缺少文件根组件。
at org.apache.crimson.parser.Parser2.fatal(Parser2.java:3376)
at org.apache.crimson.parser.Parser2.fatal(Parser2.java:3364)
at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:668)
at org.apache.crimson.parser.Parser2.parse(Parser2.java:337)
at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:448)
at org.dom4j.io.SAXReader.read(SAXReader.java:465)
at org.dom4j.io.SAXReader.read(SAXReader.java:264)
at com.jerrymouse.dom4j.demo.Test.readXMLData(Test.java:46)
at com.jerrymouse.dom4j.demo.Test.main(Test.java:36)
以下是我的测试代码:
public static void main(String[] args) throws Exception {
//解决中文问题
//createXML("xml//test.xml");
String xPath = "/xml/rs:data/rs:insert/z:row/@oth_16";
System.out.println(readXMLData("xml//200509051048.xml", xPath));
} public static String readXMLData(String filename, String xpath)
throws Exception {
String results = new String(); SAXReader saxReader = new SAXReader();
try {
saxReader.setEncoding("UTF-8");
Document document = saxReader.read(new File(filename)); /** 先用xpath查找对象 */
List list = document.selectNodes(xpath);
Iterator iter = list.iterator();
while (iter.hasNext()) {
Attribute attribute = (Attribute) iter.next();
results = attribute.getValue();
}
} catch (Exception e) {
e.printStackTrace();
}
return results;
}
xml文档的头三个字节是:EF BB BF应该是utf-8编码格式,但是读取时老是报错?请各位看看是什么问题?

解决方案 »

  1.   

    多半是xml文件格式不正确吧,尤其是那些非可见的中文字符
      

  2.   

    xml你肯定没有定义root element
      

  3.   

    把你的XML文档贴上来看看.应该是没有定义ROOT ELEMENT.或者是编码不对,却又包含特殊字符.
      

  4.   

    用IE打开你的xml文件,看能否正确显示,如果不行那肯定是你xml文件写的有问题
      

  5.   

    没有看到DOM相关的类。请楼主还是找篇文章来看看吧。
      

  6.   

    用XMLSPY打开这个文件看看是否正确。如果不正确再找其他问题
      

  7.   

    应该是你的XML文件没有根节点,XML结构是一个DOM树,一定要有一个根的