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包,还是报错~~
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包,还是报错~~
或<?xml version="1.0" encoding="GB2312"?> 试试。
或 <?xml version="1.0" encoding="GB2312"?>
不支持GBK, 换其它试试
<?xml version="1.0" encoding="UTF-8"?> 这个是建立xml文件默认的编码格式.
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();
}}