一个java和dom4j的样例

来源:互联网 发布:知乎日报 mac 编辑:程序博客网 时间:2024/06/05 22:56

 import java.util.List;
import java.io.FileInputStream;
import org.dom4j.io.SAXReader;
import org.dom4j.Document;
import org.dom4j.Element;


public class Test {
    public static void main(String args[]) {

    StringBuffer xmlStr = new StringBuffer("");
    xmlStr.append("<opDetail>");
    xmlStr.append("<recordInfo>");
    xmlStr.append("<fieldInfo>");
    xmlStr.append("<fieldChName>城市</fieldChName>"); //字段中文名
    xmlStr.append("<fieldEnName>zone_id</fieldEnName>");
    xmlStr.append("<fieldContent>昆明</fieldContent>"); //字段英文名
    xmlStr.append("</fieldInfo>");
    xmlStr.append("<fieldInfo>");
    xmlStr.append("<fieldChName>基站</fieldChName>"); //字段中文名名
    xmlStr.append("<fieldEnName>bts_name</fieldEnName>");
    xmlStr.append("<fieldContent>KM3456</fieldContent>"); //字段英文名
    xmlStr.append("</fieldInfo>");
    xmlStr.append("</recordInfo>");
    xmlStr.append("<recordInfo>");
    xmlStr.append("<fieldInfo>");
    xmlStr.append("<fieldChName>城市</fieldChName>"); //字段中文名
    xmlStr.append("<fieldEnName>zone_id</fieldEnName>");
    xmlStr.append("<fieldContent>昆明2</fieldContent>"); //字段英文名
    xmlStr.append("</fieldInfo>");
    xmlStr.append("<fieldInfo>");
    xmlStr.append("<fieldChName>基站</fieldChName>"); //字段中文名名
    xmlStr.append("<fieldEnName>bts_name</fieldEnName>");
    xmlStr.append("<fieldContent>ZT2345</fieldContent>"); //字段英文名
    xmlStr.append("</fieldInfo>");
    xmlStr.append("</recordInfo>");
    xmlStr.append("</opDetail>");

    SAXReader reader = new SAXReader();
    Document document = null;
    try {
        document = DocumentHelper.parseText(xmlStr.toString());
    } catch (Exception e) {
        System.out.println(e.toString());
    }
    Element root = (Element) document.getRootElement(); // 得到根元素 //opdtail
    List ticketInfoList = root.elements();  //所有的recordInfo的document对象
    for (int i = 0; i < ticketInfoList.size(); i++) {
        List l1 = ((Element) ticketInfoList.get(i)).elements(); //取得当个recordInfo下的所有fieldInfo的document对象
        for (int j = 0; j < l1.size(); j++) {
                Element element = (Element) l1.get(j);
                System.out.println("fieldChName " +
                                   element.elementText("fieldChName"));
                System.out.println("fieldEnName " +
                                   element.elementText("fieldEnName"));
                System.out.println("fieldContent " +
                                   element.elementText("fieldContent"));

       }
      封装结构如下:

各接口的详细信息统一使用“opDetail”参数,“opDetail”XML封装,格式如下:

<opDetail>                                                       //详细信息

              <recordInfo>                                            //记录内容

    <fieldInfo>                                              //字段内容

           <fieldChName>…</fieldChName>       //字段中文名

           <fieldEnName>…</fieldEnName> //字段英文名

           <fieldContent>…</fieldContent>   //字段内容

    </fieldInfo>

              </recordInfo>

</opDetail>

<opDetail>中可包括多个<recordInfo>部分,<recordInfo>中可包括多个<fieldInfo>部分。如果没有详细信息,则仅存“<opDetail></opDetail>”