DocumentBuilder dombuilder = domfac.newDocumentBuilder(); //把要解析的XML文档转化为输入流,以便DOM解析器解析它 
InputStream is = new FileInputStream(filepath); //解析XML文档的输入流,得到一个Document 
//由XML文档的输入流得到一个org.w3c.dom.Document对象,以后的处理都是对Document对象进行的 
Document doc = dombuilder.parse(is); 执行到这dom解析xml文件时报如下错误: 
org.xml.sax.SAXParseException: The encoding "GBK" is not supported. 
at org.apache.xerces.framework.XMLParser.reportError(XMLParser.java:1196) 
at org.apache.xerces.readers.DefaultEntityHandler.startReadingFromDocument(DefaultEntityHandler.java:541) 
at org.apache.xerces.framework.XMLParser.parseSomeSetup(XMLParser.java:312) 
at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1080) 
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:195) 
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:76) 有哪位遇到过,帮忙分析下可能的原因.谢谢 
我以前也是用的同样的方法解析都没问题,现在放在另一个工程时代码都一样并且我还还原成以前工程的xerces包,还是报错~~

解决方案 »

  1.   

    把 xml 的编码 改为 gb2312 或者 utf-8
      

  2.   

    用<?xml   version="1.0"   encoding="UTF-8"?>   
      或<?xml   version="1.0"   encoding="GB2312"?>  试试。
      

  3.   

    用 <?xml  version="1.0"  encoding="UTF-8"?>  
      或 <?xml  version="1.0"  encoding="GB2312"?>  
      

  4.   

    org.xml.sax.SAXParseException: The encoding "GBK" is not supported. 
    不支持GBK, 换其它试试
    <?xml  version="1.0"  encoding="UTF-8"?>  这个是建立xml文件默认的编码格式.
      

  5.   

    支持gbk的
    package com;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.util.List;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;public class Test { // *生成xml
    public String createXML() {
    try {
    // 生成根节点,并为根节点添加属性和属性值
    Element root = (Element) DocumentHelper.createElement("根节点")
    .addAttribute("id", "编号").addAttribute("name", "名称");
    // 生成子节点,并为子节点添加属性和属性值
    Element childElement = DocumentHelper.createElement("子节点")
    .addAttribute("id", "子节点编号");
    // 为节点添加值
    childElement.addText("子节点值");
    // 将子节点添加到根节点
    root.add(childElement);
    String filename = "jinchun.xml";
    Document responseDoc = DocumentHelper.createDocument(root);
    OutputFormat outputFormat = OutputFormat.createPrettyPrint();
    outputFormat.setEncoding("GBK");
    XMLWriter xMLWriter = new XMLWriter(new FileWriter(filename),
    outputFormat);
    xMLWriter.write(responseDoc);
    xMLWriter.close();
    } catch (IOException e) { // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return "new ok!";
    } /** * 解析XML */
    public void parseXML() {
    try {
    SAXReader sAXReader = new SAXReader();
    // 要解析的xml文件
    File file = new File("jinchun.xml");
    Document document = sAXReader.read(file);
    // 获取根节点
    Element acreen = document.getRootElement();
    // 打印根节点属性
    System.out.println(acreen.attributeValue("id"));
    System.out.println(acreen.attributeValue("name"));
    // 获取子节点
    List<Element> helloments = acreen.elements("子节点");
    for (Element helloment : helloments) {
    // 打印子节点属性
    System.out.println(helloment.attributeValue("id"));
    System.out.println(helloment.getText());
    }
    } catch (DocumentException e) { // TODO Auto-generated catch block
    e.printStackTrace();
    }
    } public static void main(String args[]) {
    Test test = new Test();
    test.createXML();
    test.parseXML();
    }}
      

  6.   

    后来对比了下,我的xerces包的问题