`

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

    博客分类:
  • xml
阅读更多

 

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

 

 

                       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文件的方法

    在IT领域,XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,它的结构清晰,易于解析,并且被广泛...了解并掌握这种方法,可以帮助开发者在处理图片数据时提供一种灵活且兼容性强的解决方案。

    XML编码批量转换工具

    总之,XML编码批量转换工具是解决XML文件编码不一致问题的有效工具,特别是对于处理包含多语言或特殊字符的大型XML项目而言。通过将文件转换为UTF-8编码,可以确保数据的准确性和跨平台兼容性。

    关于用oracle的dbms_xmldom导出xml文档编码格式UTF-8的问题总结

    2. **调用`writeToFile`时指定编码:**在创建完XML文档后,使用`dbms_xmldom.writeToFile`方法保存到文件时,也可以直接指定编码格式,如: ```sql dbms_xmldom.writeToFile(doc, xmlfile, 'UTF-8'); ``` 这一...

    IDEA编码GBK不可映射字符解决方法

    "IDEA编码GBK不可映射字符解决方法"这个主题直指一个常见的问题,即IntelliJ IDEA(IDEA)在处理GBK编码的文件时出现乱码或无法识别的字符。GBK是中国大陆广泛使用的汉字编码标准,它扩展了GB2312,包含了更多的汉字...

    简化XML处理详解

    VTD-XML作为一种创新的XML处理模型,旨在解决上述问题。VTD-XML引入了非提取式标记化技术,将原始XML消息以二进制编码的虚拟标记描述符(VTD)形式存储,保留了XML的完整结构,同时减少了内存占用。VTD记录能够高效...

    base64的XML或XML生成png图片.rar

    综上所述,"base64的XML或XML生成png图片.rar"项目涉及了Java编程语言中的XML解析、Base64编码与解码、图像处理等多个技术领域。通过理解和掌握这些技术,开发者可以创建出更安全、更灵活的数据转换解决方案。

    字符编码解决方案

    字符编码是计算机处理文本的关键,尤其在多语言环境中,正确的编码解决方案显得尤为重要。本文主要针对C++编程中遇到的乱码问题,从编码原理、Unicode的意义出发,详细讲解了四个典型场景下的乱码问题及其解决方案。...

    Flash处理XML文档数据教程

    在本文中,我们将深入探讨如何使用Flash处理XML文档数据。首先,确保你已经具备了...在实践中,你可能会遇到更复杂的情况,如处理嵌套的XML结构或使用XPath表达式来定位特定节点,但掌握了基础,就能逐步解决这些问题。

    libxml2-解析xml格式文件

    5. **国际化与编码**:Libxml2支持多种字符编码,可以处理包含非ASCII字符的XML文件,并提供了转换编码的函数。 总之,libxml2-2.7.4库为XML处理提供了一整套全面的解决方案,无论是解析、生成还是验证XML文件,都...

    PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案

    这是因为PHP的DOMDocument内部默认采用UTF-8编码,但在某些情况下,它可能无法正确识别输入数据的编码,导致在保存XML时出现乱码。 当DOMDocument的`loadHTML()`函数加载包含中文字符的HTML字符串时,如果没有明确...

    解决全站编码问题的javaWeb小项目

    本项目"解决全站编码问题的javaWeb小项目"旨在提供一套完整的解决方案,确保在项目的各个层面都能正确处理字符编码,从而避免乱码问题。 1. **HTTP请求编码** 当用户通过浏览器发送请求时,请求参数可能包含非...

    VC++ ,XML类,XML文件读写类

    - 在处理XML时,应确保正确处理编码问题,避免乱码。 - 考虑到XML的安全性,应避免XML注入攻击,对用户输入进行适当验证。 - 错误处理是关键,确保在解析失败或文件未找到时能提供有用的反馈。 8. **性能优化** ...

    wince tinyxml

    7. **编码问题**:Wince 和 WinPhone 可能涉及多种字符编码,TinyXML 默认处理的是 UTF-8 编码。如果遇到非 UTF-8 的 XML 文件,可能需要进行适当的转换。 总的来说,TinyXML 在 Wince 和 WinPhone 平台上提供了一...

    xml 数据库教程 xml语法

    通过上述分析可以看出,虽然XML文件在某些情况下可以作为简单的数据存储解决方案,但在处理大量数据、高性能需求和复杂的查询操作时,使用传统的数据库管理系统或专门的XML数据库系统更为合适。选择合适的工具和技术...

    delphi xml 权威指南

    TXMLDocument可以用来直接操作XML文档,提供了一种直观的方式来创建、修改和保存XML数据。TXMLEncoder则负责将Delphi对象编码为XML,使得对象序列化和反序列化成为可能。 此外,书里还会涉及XML与数据库的结合,...

    C++XML读写封装类

    7. **编码处理**:XML支持多种字符编码,封装类需要处理编码转换,确保在不同系统和环境间正确传输数据。 8. **命名空间支持**:XML支持命名空间,以解决元素和属性名的冲突问题。封装类需要提供处理命名空间的功能...

    中文编码问题.zip

    通过"中文编码问题.zip"中的实例,我们可以学习如何在实际项目中应用这些解决方案,包括在JSP、Servlet、数据库操作等场景下正确处理中文编码,从而避免乱码问题。通过实践和理解这些案例,开发者能更熟练地处理中文...

    JAVA常见中文乱码问题解决方法

    通过上述方法,可以有效解决Java在处理中文字符时可能出现的乱码问题,确保程序在各种环境下正确显示中文。在开发过程中,保持编码一致性,理解和利用Java提供的字符编码工具,是预防和解决这类问题的关键。

    CSharp导出List数据到xml文件

    在C#编程中,将List数据导出到XML文件是一个常见的任务,特别是在处理数据存储、交换或序列化时。XML因其结构清晰、易于解析和跨平台兼容性而被广泛使用。下面我们将详细讨论如何实现这一功能,以及相关的重要知识点...

Global site tag (gtag.js) - Google Analytics