在读取用UTF8格式编码的XML文件时,采用如下代码: SAXBuilder sb = new SAXBuilder();
InputStreamReader isr = null;
// 以UTF-8编码格式读入XML文件
FileInputStream in = new FileInputStream(ff);
isr = new InputStreamReader(in, "UTF-8");
Document doc = sb.build(isr);不能正确解析,通过UltraEdit对XML文件进行分析,发现XML文件的头几个字符是EF BB BF。这样解析出来的XML文件会变成?<?xml version...。多了个?号,因此不能正常解析。
哪位高手碰到这种情况,该如何解决,请赐教!
InputStreamReader isr = null;
// 以UTF-8编码格式读入XML文件
FileInputStream in = new FileInputStream(ff);
isr = new InputStreamReader(in, "UTF-8");
Document doc = sb.build(isr);不能正确解析,通过UltraEdit对XML文件进行分析,发现XML文件的头几个字符是EF BB BF。这样解析出来的XML文件会变成?<?xml version...。多了个?号,因此不能正常解析。
哪位高手碰到这种情况,该如何解决,请赐教!
不知道是不是这个原因?
http://blog.csdn.net/qinysong/archive/2006/09/05/1179513.aspx
那个?是正常的,哪个xml都有,不会影响解析的
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
import org.jdom.output.Format;
public class PrintJDom
{
public static void main(String args[])
{
try
{
SAXBuilder sb = new SAXBuilder();
//进行DTD验证
//sb.setFeature("http://xml.org/sax/features/validation",true);
Document doc = sb.build("Student.xml");
XMLOutputter xo = new XMLOutputter();
//处理中文显示问题。
Format format=Format.getPrettyFormat(); //格式化文档
format.setEncoding("GB2312"); //由于默认的编码是utf-8,中文将显示为乱码,所以设为gbk
xo.setFormat(format);
xo.output(doc,System.out);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}-------------------------
<?xml version="1.0" encoding="gb2312"?><StudentList>
<!--注释1-->
<Student ID="S101">
<Name>大哥</Name>
<Sex>男</Sex>
<Age>45</Age>
</Student>
<Student ID="S102">
<Name>二姐 <![CDATA[ skdjf<dkfjd>dkfjd&dj; ']]>
</Name>
<Sex>女</Sex>
<Age>39</Age>
</Student><Student ID="S103">
<Name>三<哥</Name>
<Sex>男</Sex>
<Age>33</Age>
</Student>
<Student ID="S104">
<Name>四弟</Name>
<Sex>男</Sex>
<Age>28</Age>
</Student> <Student ID="S105">
<Name>五妹</Name>
<Sex>女</Sex>
<Age>25</Age>
</Student></StudentList>