收录日期:2021/02/25 15:13:21 时间:2016/06/06 21:39:32 标签:Java EE
有一个XML文件,中间有一些注释,现在我想把这个文件复制一份,但是得去掉中间的注释,源文件不变。我呢写了一个程序,但是结果不对,请各位高手帮帮忙,指出不对的地方。
源文件如下:
//import javax.xml.parsers.*;
import org.dom4j.*;
import org.dom4j.io.*;
import java.io.*;
import java.util.*;

public class Dom4jTest {
Document newDocument;

public Dom4jTest() throws Exception{
newDocument=DocumentHelper.createDocument();
}
//得到源文件
public Document getOriginalDocument() throws Exception{
javax.xml.parsers.DocumentBuilderFactory dbf=javax.xml.parsers.DocumentBuilderFactory.newInstance();
javax.xml.parsers.DocumentBuilder db=dbf.newDocumentBuilder();
org.w3c.dom.Document doctemp=db.parse("build.xml");

DOMReader domr=new DOMReader();
return domr.read(doctemp);
}
//浏览源文件
public void visitOriginalDocument(Document doc) throws Exception{
Element root=doc.getRootElement();
visitAndNewElement(root);
}
//遍历各个节点,并生成新得节点
private void visitAndNewElement(Element element) throws Exception{
Element temp=DocumentHelper.createElement(element.getName());

Iterator elementIterator=element.elementIterator();
Iterator attributeIterator=element.attributeIterator();
while(attributeIterator.hasNext()){
Attribute attr=(Attribute)attributeIterator.next();
String attrName=attr.getName();
String attrValue=attr.getValue();
temp.addAttribute(attrName,attrValue);
}
while(elementIterator.hasNext()){
Element ele=(Element)elementIterator.next();
String eleName=ele.getName();
String eleText=ele.getText();
temp.addElement(eleName).addText(eleText);
if(ele.elementIterator().hasNext()){
visitAndNewElement(ele);
}
}

if(element.isRootElement()){
newDocument.add(temp);
}
}
//产生新文件
public void buildNewDocument() throws Exception{
FileOutputStream newFileStream=new FileOutputStream("build_copy.xml");
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("GB2312");
XMLWriter xmlWriter=new XMLWriter(newFileStream,format);
xmlWriter.write(newDocument);
}

public static void main(String[] args) throws Exception{
Dom4jTest dt=new Dom4jTest();
Document doc=dt.getOriginalDocument();
dt.visitOriginalDocument(doc);
dt.buildNewDocument();
}

}
错误贴出来看看
程序没问题,可以运行,但是效果不对,可能逻辑错了
问题解决了,谢谢大家
我改了一下程序
public void visitOriginalDocument(Document doc) throws Exception{
Element root=doc.getRootElement();
Element newRoot=DocumentHelper.createElement(root.getName());
visitAndNewElement(newRoot,root);
}

private void visitAndNewElement(Element newElement,Element element) throws Exception{
Iterator elementIterator=element.elementIterator();
Iterator attributeIterator=element.attributeIterator();
while(attributeIterator.hasNext()){
Attribute attr=(Attribute)attributeIterator.next();
String attrName=attr.getName();
String attrValue=attr.getValue();
newElement.addAttribute(attrName,attrValue);
}
while(elementIterator.hasNext()){
Element ele=(Element)elementIterator.next();
String eleName=ele.getName();
String eleText=ele.getText();
Element temp=newElement.addElement(eleName);
temp.addText(eleText);

visitAndNewElement(temp,ele);
}

if(element.isRootElement()){
newDocument.setRootElement(newElement);
}
}

用webwork2框架写了一个商务网,提供源代码。 怎样让水晶报表不提示“输入参数值”,在线等。。。 求指定凸四边形到正方形的映射算法 登陆页一个小问题,大家帮忙 哪位大哥大姐有图像配准的Delphi代码或思路 安装federa2的后遗症,求救! 刚刚看完一部什么十大禁片之最,恶心电影。。看了没感觉。。。。。。 数据库查询问题。 请问:如何用通用代码得到picturebox的image属性对应图片的路径? 表单问题?进来看看,谢谢! 首页中如何显示数据 关于这两个SQL语句应该怎样写? 关于安装sql的问题 如何在DBGrid1中加入序号 提供了10G的FTP空间,欢迎大家上传好的资源一起分享。 请问有谁用Delphi7.0+SQL Server2000设计过“学生成绩管理系统”和“学生学籍管理系统”? 求救阿,windows 挂了 求救阿 出问题了 不行了,帮忙阿 不知道如何开始学java,分数开路,分少了再开一贴. 高分(其实也不高啦,不过我最多能给这么多)求 界面友好 管理方便 的个人摄影作品发布程序。谢了。 我也问个无聊的问题 莫依MM生日快乐 :) 想实现:\"今日库存\"=\"上日库存\"+\"进货\"-\"出货\".要怎样写代码呢.请教高手.谢谢.马上结贴.谢谢 <[高难度]>:如何在子窗口中调用父窗口中用prototype增加的方法? [求助]做windows service程序 做一个RadioButtonList,数据来自一个数组,如何做?要求水平排开,每列3个? printf()如何能够支持日文显示?? 极难的题目 极难的题目,请置顶