java 读取 xml 中 编码有问题
李敏910 2009-07-08 05:55:07 java中使用了一个EntityHandler接口解析带外部实体的XML,xml使用的是utf-8编码,可是java在编译的时候提示编码有问题,因为xml中有中文信息,是不是我把Eclipse编码设置成utf-8格式的,应该就可以了 ?
----------------处理程序---------------------------------------
public class ResolverE implements EntityResolver {
public InputSource resolveEntity(String publicId, String systemId)
throws SAXException, IOException {
if (systemId.equals("http://www.builder.com/xml/entity/MyEntity")) {
System.out.println("外部实体的公共标识符是:" + publicId);
System.out.println("外部实体的系统标识符是:" + systemId);
System.out.println("查找实体:");
InputSource inputSource = new InputSource("testem");
return inputSource;
} else {
return null;
}
}
}
-----------------主函数--------------------------------------
public class ResolverMain {
public static void main(String[] args) {
try {
XMLReader reader = XMLReaderFactory.createXMLReader();
reader.setEntityResolver(new ResolverE());
reader.parse("xml/entityTest.xml");
System.out.println("解析实体完成");
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
-----------------entityTest.xml--------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<!--
neibu zhushi
-->
<!DOCTYPE company[
<!ELEMENT company (emploeey+ ,buyer*)>
<!ENTITY testem SYSTEM "emploeey.txt">
<!ENTITY testbuy SYSTEM "buyer.txt">
<!ELEMENT emploeey (names,email)>
<!ELEMENT names (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT buyer (#PCDATA|names|email)*>
<!ATTLIST emploeey
id ID #REQUIRED
status CDATA #REQUIRED
>
]>
<company>
&testem;
&testbuy;
</company>
-----------------employee.txt--------------------------------------
<emploeey id="AK47" status="pass">
<names>张三</names>//注意 ,如果这里是中文的话 ,java编译的时候会出错
<email>lili@163.com</email>
</emploeey>
-----------------buyer.txt--------------------------------------
<buyer>wo mai de dongxi bucuo o
<names>lijie</names>
<email>lijie@163.com</email>
</buyer>
-----------------错误信息--------------------------------------
[Fatal Error] emploeey.txt:2:9: Invalid byte 2 of 2-byte UTF-8 sequence.
org.xml.sax.SAXParseException: Invalid byte 2 of 2-byte UTF-8 sequence.
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at sax.ResolverMain.main(ResolverMain.java:14)