通常在操作xml的时候,都是通过inputstream(很多情况下是FileInputStream)来读入xml并转为dom的,很多人会遇到这种情况数据不是从文件读入的而是从String中取得的 
于是会使用 
InputStream in = new ByteArrayInputStream (str.getBytes());来取得inputstream ,但是这种InputStream中数据被转成了byte数组,所以转dom的时候就会报错

可以通过以下思路来解决


// 字符串转XML 
view plaincopy to clipboardprint?
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);   
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转字符串 
view plaincopy to clipboardprint?
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();