Dom4j 应用简介【转】
Dom4j 使用简介【转】作者:冰云 icecloud(AT)sina.com时间:2003.12.15?版权声明:本文由冰云完成,首发于CSDN,
Dom4j 使用简介【转】
作者:冰云 icecloud(AT)sina.com时间:2003.12.15?版权声明:本文由冰云完成,首发于CSDN,未经许可,不得使用于任何商业用途。文中代码部分引用自while(iter.hasNext()){????????????? Attribute attribute = (Attribute)iter.next();????????????? if(attribute.getValue().equals("yes")){????????????????? attribute.setValue("no");????????????? }?? ?????????? }?????????? ?????????? /**?????????? ?* 修改内容之二: 把owner项内容改为Tshinghua?????????? ?* 并在owner节点中加入date节点,date节点的内容为2004-09-11,还为date节点添加一个属性type?????????? ?*/?????????? list = document.selectNodes("/books/owner" );?????????? iter = list.iterator();?????????? if(iter.hasNext()){????????????? Element ownerElement = (Element)iter.next();????????????? ownerElement.setText("Tshinghua");????????????? Element dateElement = ownerElement.addElement("date");????????????? dateElement.setText("2004-09-11");????????????? dateElement.addAttribute("type","Gregorian calendar");?????????? }?????????? ?????????? /** 修改内容之三: 若title内容为5. 格式化输出和指定编码?默认的输出方式为紧凑方式,默认编码为UTF-8,但对于我们的应用而言,一般都要用到中文,并且希望显示时按自动缩进的方式的显示,这就需用到OutputFormat类。?
???? ??? /**??? ?* 格式化XML文档,并解决中文问题??? ?*
@param filename??? ?*
@return??? ?*/???
public int formatXMLFile(String filename){??????
int returnValue = 0;??????
try{?????????? SAXReader saxReader =
new SAXReader(); ?????????? Document document = saxReader.read(
new File(filename));?????????? XMLWriter writer =
null;?????????? /** 格式化输出,类型IE浏览一样 */?????????? OutputFormat format = OutputFormat.createPrettyPrint();?????????? /** 指定XML编码 */?????????? format.setEncoding("GBK");?????????? writer=
new XMLWriter(
new FileWriter(
new File(filename)),format);?????????? writer.write(document);?????????? writer.close();????? ?????????? /** 执行成功,需返回1 */?????????? returnValue = 1;???? ?????? }
catch(Exception ex){?????????? ex.printStackTrace();?????? }??????
return returnValue;??? }?说明:?OutputFormat format = OutputFormat.createPrettyPrint();这句指定了格式化的方式为缩进式,则非紧凑式。?format.setEncoding("GBK");指定编码为GBK。?XMLWriter writer = new XMLWriter(new FileWriter(new File(filename)),format);这与前面两个方法相比,多加了一个OutputFormat对象,用于指定显示和编码方式。?
6. 完整的类代码?前面提出的方法都是零散的,下面给出完整类代码。?
XMLWriter?writer; ?? ????????try?{ ?? ????????????OutputFormat?format?=?OutputFormat.createPrettyPrint(); ?? ????????????//format.setEncoding("UTF-8"); ?? ????????????FileOutputStream?fos?=?new?FileOutputStream(xmlFile); ?? ????????????//writer?=?new?XMLWriter(new?FileWriter(xmlFile),?format); ?? ????????????writer?=?new?XMLWriter(fos,?format); ?? ????????????writer.write(document); ?? ????????????writer.close(); ?? ????????}?catch?(IOException?e)?{ ?? ????????????//?TODO?自动生成?catch?块 ?? ????????????logger.error("修改xml文件失败!"); ?? ????????????e.printStackTrace(); ?? ????????}???
?
?
?
?
?