SAXReader saxReader = new SAXReader();
Document document;
String str = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><dir><file preview=\"readonly\" name=\"yue\" value=\"最近一个月收益率前五名\" /><file preview=\"readonly\" name=\"jidu\" value=\"最近一个季度收益率前五名\" /></dir>";
try {
document = saxReader.read(new ByteArrayInputStream(str.getBytes()),"UTF-8");
Element incomingForm = document.getRootElement();
incomingForm.getName();
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}这段代码老报一个字符编码的错 不知道怎么改 谢谢高人帮忙解决下!!

解决方案 »

  1.   


      一、使用最原始的javax.xml.parsers,标准的jdk api// 字符串转XML
    String xmlStr = \"......\";
    StringReader sr = new StringReader(xmlStr);
    InputSource is = new InputSource(sr);
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder=factory.newDocumentBuilder();
    Document doc = builder.parse(is);//XML转字符串
    TransformerFactory  tf  =  TransformerFactory.newInstance();
    Transformer t = tf.newTransformer();
    t.setOutputProperty(\"encoding\",\"GB23121\");//解决中文问题,试过用GBK不行
    ByteArrayOutputStream  bos  =  new  ByteArrayOutputStream();
    t.transform(new DOMSource(doc), new StreamResult(bos));
    String xmlStr = bos.toString();这里的XML DOCUMENT为org.w3c.dom.Document  二、使用dom4j后程式变得更简单// 字符串转XML
    String xmlStr = \"......\";
    Document document = DocumentHelper.parseText(xmlStr);// XML转字符串
    Document document = ...;
    String text = document.asXML();这里的XML DOCUMENT为org.dom4j.Document  三、使用JDOMJDOM的处理方式和第一种方法处理很类似//字符串转XML
    String xmlStr = \".....\";
    StringReader sr = new StringReader(xmlStr);
    InputSource is = new InputSource(sr);
    Document doc = (new SAXBuilder()).build(is);//XML转字符串
    Format format = Format.getPrettyFormat();
    format.setEncoding(\"gb2312\");//配置xml文档的字符为gb2312,解决中文问题
    XMLOutputter xmlout = new XMLOutputter(format);
    ByteArrayOutputStream bo = new ByteArrayOutputStream();
    xmlout.output(doc,bo);
    String xmlStr = bo.toString();这里的XML DOCUMENT为org.jdom.Document  四、JAVASCRIPT中的处理//字符串转XML
    var xmlStr = \".....\";
    var xmlDoc = new ActiveXObject(\"Microsoft.XMLDOM\");
    xmlDoc.async=false;
    xmlDoc.loadXML(xmlStr);
    //能够处理这个xmlDoc了
    var name = xmlDoc.selectSingleNode(\"/person/name\");
    alert(name.text);//XML转字符串
    var xmlDoc = ......;
    var xmlStr = xmlDoc.xml这里的XML DOCUMENT为javascript版的XMLDOM
      

  2.   

    你试试不选择字符集
    document = saxReader.read(new ByteArrayInputStream(str.getBytes()));