自己碰到的问题:
原错误代码:
- Document
document = DocumentHelper.createDocument(); - document.setXMLEncoding("UTF-8");
- docElement.addAttribute("DOC_TYPE",
"中文"); - String
docStr = document.asXML(); - FileUtils.writeStringToFile(new
File(fileName + ".xml"), docStr);
在Eclipse下执行时无乱码,但使用bat执行时出现了乱码。(不知为什么Eclipse中不出现乱码???)
解决方案:
FileUtils.writeStringToFile(new File(fileName + ".xml"), docStr, "UTF-8")
乱码解决方案:
现象描述:
完
具体描述:
这给我们一个错觉,两个接口可以任意使用。
首先我们用
然后我们改为
也就是说在控制台的时候一定要用一个
然后我们用
然后我们改为
也就是说在输出文件的时候一定要用一个
疯了吧
因此,对于
测试的
测试代码:
|
- public
void createXML(String fileName) { -
Document doc = org.dom4j.DocumentHelper.createDocument(); -
Element root = doc.addElement("book"); -
root.addAttribute("name", "我的图书"); -
Element childTmp; -
childTmp = root.addElement("price"); -
childTmp.setText("21.22"); -
Element writer = root.addElement("author"); -
writer.setText("李四"); -
writer.addAttribute("ID", "001"); -
try { -
org.dom4j.io.XMLWriter xmlWriter = new org.dom4j.io.XMLWriter( -
new FileWriter(fileName)); -
xmlWriter.write(doc); -
xmlWriter.close(); -
} -
catch (Exception e) { -
System.out.println(e); -
} -
}
- public
XMLWriter(OutputStream out) throws UnsupportedEncodingExcep tion { -
//System.out.println("In OutputStream"); -
this.format = DEFAULT_FORMAT; -
this.writer = createWriter(out, format.getEncoding()); -
this.autoFlush = true; -
namespaceStack.push(Namespace.NO_NAMESPACE); -
} -
public XMLWriter(OutputStream out, OutputFormat format) throws UnsupportedEncodingExcep tion { -
//System.out.println("In OutputStream,OutputFormat"); -
this.format = format; -
this.writer = createWriter(out, format.getEncoding()); -
this.autoFlush = true; -
namespaceStack.push(Namespace.NO_NAMESPACE); -
} -
-
protected Writer createWriter(OutputStream outStream, String encoding) throws UnsupportedEncodingExcep tion { -
return new BufferedWriter( -
new OutputStreamWriter( outStream, encoding ) -
); -
}
由上面的代码我们可以看出
- public
void createXML(String fileName) { -
Document doc = org.dom4j.DocumentHelper.createDocument(); -
Element root = doc.addElement("book"); -
root.addAttribute("name", "我的图书"); -
Element childTmp; -
childTmp = root.addElement("price"); -
childTmp.setText("21.22"); -
Element writer = root.addElement("author"); -
writer.setText("李四"); -
writer.addAttribute("ID", "001"); -
try { -
//注意这里的修改 -
org.dom4j.io.XMLWriter xmlWriter = new org.dom4j.io.XMLWriter( -
new FileOutputStream(fileName)); -
xmlWriter.write(doc); -
xmlWriter.close(); -
} -
catch (Exception e) { -
System.out.println(e); -
} -
}
匹配xml中非法字符的正则表达式:[\\x00-\\x08\\x0b-\\x0c\\x0e-\\x1f]
例子:str.replaceAll("[\\x00-\\x08\\x0b-\\x0c\\x0e-\\x1f]", "");