关于网友提出的“ 如何在java里面更新xml文件的信息?为什么新增图书会出现中文乱码?”问题疑问,本网通过在网上对“ 如何在java里面更新xml文件的信息?为什么新增图书会出现中文乱码?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 如何在java里面更新xml文件的信息?为什么新增图书会出现中文乱码?
描述:javaxml编码乱码
/**
* 新增图书
*/
public void saveBook(Book book){
//1、生成新图书编号,并赋值给图书对象
int newId = books.get(books.size()-1).getId()+1;
book.setId(newId);
//2、根据XML文件结构生成图书节点字符串
String newBookStr = book.toString();
//3、读取XML文件流,并转换成字符串格式
String strXML = readFileContent("src/Books.xml");
//4、将图书节点字符串追加到原XML文件后
int iIndex = strXML.indexOf("");//获取标签索引值
if(iIndex > -1){
StringBuffer sb = new StringBuffer(strXML.substring(0,iIndex));
sb.append(newBookStr);
sb.append("");
//5、保存追加后的XML文件
boolean flag = createXML("src/Books.xml",sb.toString());
//6、将新增的图书添加到集合中
if(flag){
books.add(book);
}
}
}
/**
* 更新XML中的库存信息
* @param book
*/
public void updateXML(Book book){//修改XMl文件的方法
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db;
try {
db = dbf.newDocumentBuilder();
Document doc = db.parse("src/Books.xml");
NodeList list = doc.getElementsByTagName("book");//获取标签名为book的所有节点列表
for(int i=0;i<>
if(list.item(i).getNodeType() == 1){
Element tagNameBigElement = (Element) list.item(i);
Node node = tagNameBigElement.getElementsByTagName("id").item(0);//id节点
if(node.getTextContent().equals(""+book.getId())){
tagNameBigElement.getElementsByTagName("store").item(0).setTextContent(""+book.getStore());
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource domSource = new DOMSource(doc);
//设置编码类型
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");//Java编程中更新XML的方法-OutputKeys类
StreamResult result = new StreamResult(new FileOutputStream("src/Books.xml"));
//把DOM树转化为xml文件
transformer.transform(domSource, result);
}
}
}
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
解决方案1: 是否是没改为:UTF-8?
解决方案2: 看一下字符编码和字符集的相关API,乱码问题通常都是这些因素造成的。
以上介绍了“ 如何在java里面更新xml文件的信息?为什么新增图书会出现中文乱码?”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/1832102.html