利用dom4j来生成xml文件

在利用dom4j来生成xml文件的时候,当然需要先将dom4j的包引进来,好的是在hibernate的lib下自带了一个dom4j,也可以利用过来,

如果要生成这样的xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<SubOutGateInfo>
 <ShipSideName>NPEDI</ShipSideName>
 <GateName>1</GateName>
 <ChannelCode>1</ChannelCode>
 <TruckCode>ZJB-XXXXX</TruckCode>
 <SubOutGateContainer1>
  <ContainerNo>CBHU9867210</ContainerNo>
  <IEFlag>I</IEFlag>
  <ContainerEmptyFlag>E</ContainerEmptyFlag>
  <ContainerType>CP</ContainerType>
  <TradeType>w</TradeType>
 </SubOutGateContainer1>
 <SubOutGateContainer2>
  <ContainerNo></ContainerNo>
  <IEFlag></IEFlag>
  <ContainerEmptyFlag></ContainerEmptyFlag>
  <ContainerType></ContainerType>
  <TradeType></TradeType>
 </SubOutGateContainer2>
</SubOutGateInfo>

该如何利用dom4j生成呢(当然也可以不利用dom4j生成xml文件,这里只是记录dom4j生成xml文件的用法)?下述代码将在F盘生成一个名为“text.xml”的xml文件.

import java.io.FileWriter;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.Node;

public class Test {

 public static void main(String[] args) throws Exception {
  Document document = DocumentHelper.createDocument();
  /**
   * 新建一个根标记<SubOutGateInfo></SubOutGateInfo>
   */
  Element root = document.addElement("SubOutGateInfo");
  /**
   * 在根标记下创建一个子标记<ShipSideName></ShipSideName>
   * 并利用setText(String str)方法为其标记设置了一个值"NPEDI"
   * 此时xml文件为:
   * <SubOutGateInfo>
   *   <ShipSideName>NPEDI</ShipSideName>
   * </SubOutGateInfo>
   */
  root.addElement("ShipSideName").setText("NPEDI");
  /**
   * 在根标记下创建一个子标记<GateName></GateName>
   * 原理同上用setText(String str)方法为起标记设置一个值"1"
   * 此时xml文件为:
   *<SubOutGateInfo>
   *   <ShipSideName>NPEDI</ShipSideName>
   *   <GateName>1</GateName>
   * </SubOutGateInfo>
   * 下面的用法基本雷同,不在赘述.
   */
  root.addElement("GateName").setText("1");
  root.addElement("ChannelCode").setText("1");
  root.addElement("TruckCode").setText("ZJB-XXXXX");
  root.addElement("SubOutGateContainer1");
 
  Element subOutGetContainer1 = root.element("SubOutGateContainer1");
  subOutGetContainer1.addElement("ContainerNo").setText("CBHU9867210");
  subOutGetContainer1.addElement("IEFlag").setText("I");
  subOutGetContainer1.addElement("ContainerEmptyFlag").setText("E");
  subOutGetContainer1.addElement("ContainerType").setText("CP");
  subOutGetContainer1.addElement("TradeType").setText("w");
 
  root.addElement("SubOutGateContainer2");
  Element subOutGetContainer2 = root.element("SubOutGateContainer2");
  subOutGetContainer2.addElement("ContainerNo").setText("");
  subOutGetContainer2.addElement("IEFlag").setText("");
  subOutGetContainer2.addElement("ContainerEmptyFlag").setText("");
  subOutGetContainer2.addElement("ContainerType").setText("");
  subOutGetContainer2.addElement("TradeType").setText("");
 
  //在终端打印出生成的xml文件
  System.out.println(document.asXML());
  //将生成的xml文件保存在"F:/text.xml"文件中
  FileWriter fw = new FileWriter("F:/text.xml");
  fw.write(document.asXML());
  fw.flush();
  fw.close();
  //读取标签名为<ShipSideName>的值
  String shipSideNameValue = root.element("ShipSideName").getText();
  System.out.println(shipSideNameValue);
 
  //获取根标签下的所有子标签
  List<Node> elements = (List<Node>)root.elements();
  Iterator<Node> it = elements.iterator();
  while(it.hasNext()){
   System.out.println(it.next().getName());
  }
 
 }

}

你可能感兴趣的:(利用dom4j来生成xml文件)