读书人

处理保存XML编码有关问题的解决办法(2)

发布时间: 2012-12-18 12:43:41 作者: rapoo

处理保存XML编码问题的解决方法(2)

?

输出文件时,属性的值没有发生改变

?

?

                       String src = request.getSession().getServletContext().getRealPath("/");File file = new File(src + "xml/scene.xml");SAXReader sax = new SAXReader();Document document = sax.read(file);Element root = document.getRootElement();Element returnHome = root.element("returnHome");Element lightin = returnHome.element("lighting");System.out.println(lightin);boolean flag=false;for (Iterator it = lightin.elementIterator(); it.hasNext();) {Element element = (Element) it.next();System.out.println(element.attribute("value").getValue());System.out.println(element.attribute("status").getValue());if ("lighiting1".equals(element.attributeValue("value"))) {element.attribute("status").setValue("1");flag=true;continue;}}if (flag) {StringWriter writer = new StringWriter();        OutputFormat format = OutputFormat.createPrettyPrint();         format.setEncoding("utf-8");        XMLWriter xmlwriter = new XMLWriter(writer, format);        xmlwriter.write(document);          writer.flush();        xmlwriter.flush();        writer.close();        xmlwriter.close();}} catch (DocumentException e) {e.printStackTrace();}

?作修改之后 的代码为:

?

try {String src = request.getSession().getServletContext().getRealPath("/");String path=src + "xml/scene.xml";File file = new File(src + "xml/scene.xml");SAXReader sax = new SAXReader();Document document = sax.read(file);Element root = document.getRootElement();Element returnHome = root.element("returnHome");Element lightin = returnHome.element("lighting");System.out.println(lightin);//String[] lighting = request.getParameterValues("lighting");//String[] curtain = request.getParameterValues("curtain");boolean flag=false;for (Iterator it = lightin.elementIterator(); it.hasNext();) {Element element = (Element) it.next();System.out.println(element.attribute("value").getValue());System.out.println(element.attribute("status").getValue());if ("lighiting1".equals(element.attributeValue("value"))) {element.attribute("status").setValue("1");element.attribute("name").setValue("XXXXXXXXXXX");flag=true;//closeAction();continue;}}if (flag) {FileWriter writer = new FileWriter(path);        OutputFormat format = OutputFormat.createPrettyPrint();         format.setEncoding("utf-8");        XMLWriter xmlwriter = new XMLWriter(writer, format);        xmlwriter.write(document);         writer.flush();        xmlwriter.flush();        writer.close();        xmlwriter.close();// FileWriter out = new FileWriter(filename);// document.write(out);// out.flush();// out.close();}} catch (DocumentException e) {e.printStackTrace();}

?

原因:

?? 在输入新文件的时候,应该指定文件的路径.

?

?

最近又发现了一个问题..就是我指定的文件保存为UTF-8,可以保存之后打开查看还是ASNI编码格式,

?

后来经过调试发现,直接通过文件流来保存不会出现这样的情况并且代码也少了一大截

?

如:

?

FileOutputStream   os   =   new   FileOutputStream( path); os.write(document.asXML().getBytes( "UTF-8 ")); os.close;
?

?


读书人网 >XML SOAP

热点推荐