关于dom4j创建xml文件疑问

问题描述

importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.UnsupportedEncodingException;importorg.dom4j.Document;importorg.dom4j.DocumentHelper;importorg.dom4j.Element;importorg.dom4j.io.OutputFormat;importorg.dom4j.io.XMLWriter;publicclassxml{publicvoidadd(Stringname,Stringsex){Documentdoc=DocumentHelper.createDocument();Elementstu_root=doc.addElement("Student");Elementstu_name=stu_root.addElement("name");stu_name.setText(name);Elementstu_sex=stu_root.addElement("sex");stu_sex.setText(sex);OutputFormatoutput=OutputFormat.createPrettyPrint();output.setEncoding("GB2312");try{XMLWriterwriter=newXMLWriter(newFileOutputStream(newFile("student.xml"),true),output);writer.write(doc);writer.close();}catch(UnsupportedEncodingExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(FileNotFoundExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}<?xmlversion="1.0"encoding="GB2312"?><Student><name>黎明</name><sex>男</sex></Student><?xmlversion="1.0"encoding="GB2312"?><Student><name>asd</name><sex>asd</sex></Student>为什么每次执行程序后,就会添加<?xmlversion="1.0"encoding="GB2312"?>这一句,求解答。谢谢

解决方案

解决方案二:

这个主要是你的参数使用问题XMLWriterwriter=newXMLWriter(newFileOutputStream(newFile("student.xml"),true),output);把参数true该为false就可以了true是append(追加模式),改为false就是覆盖模式了
解决方案三:

1.首先你这个add(Stringname,Stringsex)方法就是一个建立完整xml文件的方法。每次调用add(Stringname,Stringsex)方法,都会建立一个完整的xml文件,包含xml文件头。在代码中的这一句:writer.write(doc),我们来查看一下dom4j中相关的源代码,publicvoidwrite(Documentdoc)throwsIOException{writeDeclaration();if(doc.getDocType()!=null){indent();writeDocType(doc.getDocType());}for(inti=0,size=doc.nodeCount();i<size;i++){Nodenode=doc.node(i);writeNode(node);}writePrintln();if(autoFlush){flush();}}

也就是说每次使用write(Documentdoc)这个方法时候,都会默认增加xml头,即代码中红色部分。所以你每次执行程序都会添加那一句话。2.如楼上所说,true为append。运行add(Stringname,Stringsex)方法时,若为true,则在原xml文件后面拼接新的xml代码。若为false,则覆盖掉原来的xml代码。
解决方案四:

这就是xml定义的规范啊,,不写output.setEncoding("GB2312");默认是UTF-8
解决方案五:

我现在就是要第一次写入XML文件的时候加上文件头,而后面在写的时候不加xml文件头,也就是一个xml文件内只存在一个文件头,该如何解决?
解决方案六:

没遇到过这个问题,别人的回答算学习了
解决方案七:

遇到过这个问题,别人的回答算学习了
解决方案八:

楼主自己不是设置了output.setEncoding("GB2312");编码为GB2312吗不设置的话默认就是UTF-8
解决方案九:

引用4楼u012903028的回复:

我现在就是要第一次写入XML文件的时候加上文件头,而后面在写的时候不加xml文件头,也就是一个xml文件内只存在一个文件头,该如何解决?

那就不是一个完整的xml文件了,,直接通过浏览器打开会报错。

时间: 2024-10-30 00:07:04

关于dom4j创建xml文件疑问的相关文章

【dom4j xml】使用dom4j处理XML文件--测试过程遇到的问题

 首先 关于dom4j的API,有如下: 当然  其中的实体引用有以下: 测试使用环境: 使用Maven搭建web环境,pom.xml文件配置如下: 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/P

dom4j写xml文件测试

dom4j写xml文件测试:     package com.yanek.demo.xml.test; import java.io.File;import java.io.FileWriter; import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.XMLWriter; public class DOM4j {  public static v

XmlTextWriter创建XML文件

xml|创建 引言 随着XML的普及以及在动态WEB应用程序中大量应用,如何通过.NET创建,删除,修改XML文件变的也来也重要了.一个简单的概念是,XML文件跟大的文本文件并没有什么区别,同时它是先于.NET出现,很多ASP的开发者,当他需要程序输出XML文件的时候,通常都是用Response.Write()方法输出为XML文档. 使用Response.Write()的方式来输出XML文档,并不是一种那么好的方法,首先,我们用这种方法输出字符以组成XML文件的时候,我们会很担心输出的这些字符是

使用Javascript创建XML文件

javascript|xml|创建  在客户端创建XML文件可以使用FileSystemObject (FSO) 对象或直接使用XML Document Object Model (DOM).若使用FSO则客户端必须安装 Window Script 5.5,使用XML DOM则需要在客户端安装有Microsoft XML Core Services.安全性方面需要在IE的安全设置中启用ActiveX控件. 1.使用FSO创建XML文件 使用FSO对象的GetSpecialFolder方法获得要创

dom4j向xml文件中增加数据后缺少结尾标签

问题描述 dom4j向xml文件中增加数据后缺少结尾标签 public boolean insertStudent(Student student) { boolean flag=false; SAXReader saxReader=new SAXReader(); try { Document doc=saxReader.read(new File("dbstudent.xml")); Element rootEle=doc.getRootElement(); Element sno

java-关于使用dom4j处理xml文件报错

问题描述 关于使用dom4j处理xml文件报错 相同的代码,在JAVA工程里可以运行 然而我在android工程中调用的时候,却出现了问题!,程序在第一步URL url = new URL("http://api.map.baidu.com/telematics/v3/weather?location=%E9%95%87%E6%B1%9F&ak=4Xyifj6ty3WCLeLIgANbGR0N");好像就失败了,似乎无法打开....求大神告诉一下怎么解决 解决方案 实例037

dom4j解析xml文件实例

dom4j解析xml文件实例     package com.yanek.demo.xml.test; import java.io.File;import java.util.List; import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader; public class Dm4jReadXml {  /**  * @pa

使用DOM4J生成XML文件的换行以及特殊字符问题

问题描述 使用DOM4J生成XML文件,节点内容如何换行,'n'不行 在输出的节点内容中,有"<" 字符,我希望保留,但是却转换成了转移字符 < ,如何能阻止这种转换? 解决方案 使用n是可以换行的,要输出<等字符用addCDATA方法,代码如下public static void main(String[] args) throws Exception { Document doc = DocumentFactory.getInstance().createDocu

android studio-Android Studio 怎么在drawable里创建xml文件

问题描述 Android Studio 怎么在drawable里创建xml文件 解决方案 右键>New>Android Xml File 解决方案二: 在对应的文件夹里新建xml文件,adroidstudio会自动加载到project里 解决方案三: 啥意思?右键new一个,不行? 解决方案四: 谢谢大家,知道怎么弄了.