输出文件时,属性的值没有发生改变
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;
分享到:
相关推荐
php中DOMDocument对于xml操作我们只要是英文是没有问题了,但如果是中文字体就会有乱码问题了,下面我们就此问题给各位介绍一些解决办法吧. PHP的DOM内部是utf8机制的,在loadHTML时,是通过检查字符中meta的charset来...
加载或保存XML时引发的异常.System.ArgumentException: “”(十六进制值 0x1D)是无效的字符。 出错的原因是内容中含有低位非打印字符,处理方法是对其进行过滤,过滤方法为: return System.Text.RegularE
TinyXML支持UTF-8,所以可以处理任何语言的XML文件,而且TinyXML也支持“legacy模式”——一种在支持UTF-8之前使用的编码方式,可能最好的解释是“扩展的ascii”。 正常情况下,TinyXML会检测出正确的编码并使用它...
namespace是为了解决XML文档中的命名冲突问题的。 DTD不支持命名空间,解析器无法测试命名空间。 1、作用: 解决XML文档中命名冲突的问题,即将 XML文档与引用URI标识的名域相结合,来 限定其中的元素和属性名。...
XPath的选择功能十分强大,它提供了非常简明的路径选择表达式,另外,它还提供了超过100个内建函数,用于字符串、数值、时间的匹配以及节点、序列的处理等,几乎所有我们想要定位的节点,都可以用XPath来选择 ...
告诉FileUpload组件处理时的编码为项目编码,在FileItem中,用getString(encoding),这项设置可以解决获取的表单字段为乱码的问题,所以在每个FileItem实例后面都执行一次getString(encoding),就告诉FileItem在取值...
14.4 内存中的XML处理 14.4.1 XmlDocument 14.4.2 XPathNavigator 14.4.3 XDocument 14.5 搜索XML内容 14.5.1 搜索XmlDocument 14.5.2 使用XPath搜索XmlDocument 14.5.3 使用LINQ搜索XDocument ...
14.3 基于流的XML处理 475 14.3.1 写XML文件 476 14.3.2 读取XML文件 478 14.4 内存中的XML处理 481 14.4.1 XmlDocument 482 14.4.2 XPathNavigator 485 14.4.3 XDocument 486 14.5 搜索XML内容 491...
帮助解决网页和JS文件中的中文编码问题的小工具 慎用const关键字 装箱,拆箱以及反射 动态调用对象的属性和方法——性能和灵活性兼备的方法 消除由try/catch语句带来的warning 微软的应试题完整版(附答案) 一个...
告诉FileUpload组件处理时的编码为项目编码,在FileItem中,用getString(encoding),这项设置可以解决获取的表单字段为乱码的问题,所以在每个FileItem实例后面都执行一次getString(encoding),就告诉FileItem在取值...