Dom4j 写文件不全

2024-09-02 20:58
文章标签 不全 dom4j

本文主要是介绍Dom4j 写文件不全,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天用dom4j 写文件,要么写文件不全,要么文件为空。

刚开始有问题的是:

package com.zhangyue.translate;import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;/*** Created by zy on 2019/3/21.*/
public class TranslateStringXml {public static void main(String[] args) {translateAndroidXmlString("F:\\github\\AndroidStringTranslate\\src\\res\\strings.xml","F:\\github\\AndroidStringTranslate\\out\\result.xml");}public static void translateAndroidXmlString(String sourcePath,String outPath){// 解析xmlSAXReader reader = new SAXReader();Itranslate translate = new YouDaoTranslate();try {// 通过reader对象的read方法加载books.xml文件,获取docuemnt对象。Document document = reader.read(new File(sourcePath));// 通过document对象获取根节点bookstoreElement rootElement = document.getRootElement();// 通过element对象的elementIterator方法获取迭代器Iterator it = rootElement.elementIterator();// 遍历迭代器,获取根节点中的信息while (it.hasNext()) {Element element = (Element) it.next();String name = element.attribute("name").getValue();String value = element.getStringValue();System.out.println(name + "-"+ value);element.setText(translate.translate(value));
//                element.setText("1111");}System.out.println(document.asXML());document.write(new FileWriter(outPath));} catch (DocumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
}

修改之后:

package com.zhangyue.translate;import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;/*** Created by zy on 2019/3/21.*/
public class TranslateStringXml {public static void main(String[] args) {translateAndroidXmlString("F:\\github\\AndroidStringTranslate\\src\\res\\strings.xml","F:\\github\\AndroidStringTranslate\\out\\result.xml");}public static void translateAndroidXmlString(String sourcePath,String outPath){// 解析xmlSAXReader reader = new SAXReader();Itranslate translate = new YouDaoTranslate();try {// 通过reader对象的read方法加载books.xml文件,获取docuemnt对象。Document document = reader.read(new File(sourcePath));// 通过document对象获取根节点bookstoreElement rootElement = document.getRootElement();// 通过element对象的elementIterator方法获取迭代器Iterator it = rootElement.elementIterator();// 遍历迭代器,获取根节点中的信息while (it.hasNext()) {Element element = (Element) it.next();String name = element.attribute("name").getValue();String value = element.getStringValue();System.out.println(name + "-"+ value);element.setText(translate.translate(value));
//                element.setText("1111");}System.out.println(document.asXML());FileWriter writer = new FileWriter(outPath);document.write(writer);writer.flush();} catch (DocumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
}

原因:

  document.write(new FileWriter(outPath));

这里我直接写,但是并没有把内存中的数据刷到存储设置里面。
需要这样改:

            FileWriter writer = new FileWriter(outPath);document.write(writer);writer.flush();

当时我还以为,没有io exception ,怎么会写不成功?
后来我发现,System.out.println(document.asXML()); 打印出来都是正常的。

后来想到io 的缓存特性。好吧。

记住,io 要么用完要关闭,或者flush.

这篇关于Dom4j 写文件不全的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1131055

相关文章

javaweb-day02-2(00:40:06 XML 解析 - Dom4j解析开发包)

导入dom4j开发包:dom4j-1.6.1.jar   在工程下建一个文件夹lib,将dom4j-1.6.1.jar拷到里边。右键add to build path。  dom4j-1.6.1\lib文件夹下还有一些jar包,是开发过程中dom4j所需要依赖的jar包,如开发过程中报错,则需导入。   用dom4j怎么做呢? 只要是开源jar包提供给你的时候,它会在开源包里面提供

XML-dom4j实战

dom4j是一个用来读取XML的工具包,它是采用DOM思想来读取的,也就是把XML组织成一个文档树,然后根据相应的节点来读取。 import java.io.File;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import org.dom4j.Attribute;import

ListView数据只有显示不全bug

Android编程中,ScrollView嵌套ListView时,会无法正确的计算ListView的大小。解决的办法有如下两种: 解决方案1: 直接把包含ListView控件的ScrollView控件从布局文件中去除,留下ListView控件,这是最简单快捷的解决办法,如果一定要在ScrollView中包含ListView,则参考解决方案2:

iReport内容显示不全

当Text Field组件中的内容过长时,会导致内容显示不全 将图中标出的属性打上勾即可 预览效果: 可以显示全部内容,看一下导出的xls显示的效果吧 内容也可以全部显示,但是当记录数过多时,界面就会显示很难看,那么有没有办法让行高设置成很小,但是又可以显示全部的内容呢 选中组件,增加属性net.sf.jasperreports.print.keep.full.text 值为

解决RecycleView 嵌套 RecycleView 显示不全的问题

RecycleView 嵌套 RecycleView,里面的RecycleView 内容显示不全。 原因是里面的RecycleView ,我在布局里面写的高度是match_parent <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"android

@antv/x6 要求不显示水平滚动条,并且如果水平方向上显示不全的节点,则要求自动显示全部节点,垂直方向可以出现滚动条来滚动显示所有的节点。

1、要求一共有二个: 要求一:水平滚动条不显示。之前的文章中就已经发表过,可以用Scroller的className来处理。要求二:水平方向上显示全部节点,如果有显示不全的节点(即看不到的节点)要求能够显示出来,垂直方向的滚动条可以显示出来,然后用滚动条来滚动显示下面看不到的节点。 2、思路: 思路一:水平不显示滚动条。vue3 @antv/x6 使用画布滚动条以后的几个问题的解决

dom4j-dom-sax解析

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://www.example.org/web-app_2_5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.example.org/web-app_2_5 w

解决RecyclerView条数显示不全问题

小知识解决大问题,问题处理+经验分享,大家好,我是时代新人!今天给大家分享一条小经验,请往下看: 多个RecyclerView同时使用的时候,比如线性垂直排布三个RecyclerView,那么会出现一个问题就是第一个RecyclerView的数据条数显示不全,只能显示一屏的内容,比如有10条数据,一屏只能显示5条,那么第一个RecyclerView就只显示5条数据,然后就显示下一个Recycle

CANoe Trace界面介绍及Trace界面log显示不全解决方法

文章目录 一、前言1.Configuration2.显示模式的切换3.Title信息4.保存报文5.Detail View6.差分分析工具 二、问题现象:CANoe Trace面板log显示不全三、解决方法1.调整trace window的显示最大值,方法如图2.重启工程,重新加载log数据。 一、前言 Trace界面用于监控报文的界面,此界面包含很多功能,例如过滤报文,比

利用dom4j解析xml

引言 最近有个项目需要解析xml 文件,获取其中的节点内容, 小编选择了一个编码简单又高效的dom4j来完成。 1、xml内容 <?xml version="1.0" encoding="UTF-8"?><RecognizeResult><Speech Uri="/Sub/2019-12-03.3/file/5149-15892322607-20191202141010-rJKTcXfpB