1. 程式人生 > >根據節點的絕對路徑創建Xml

根據節點的絕對路徑創建Xml

XML class password bstr pass for list集合 new helper

根據節點的絕對路徑來創建XML格式數據

package com.szzt.dataService.helper;

import java.util.List;

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

public class XMLHelper {
    private Document document;

    public XMLHelper() {

    }

    public XMLHelper(Document document) {
        
super(); this.document = document; } public Document addElement(String elementName, String value) { String[] nameArray = null; if (elementName.indexOf("/") > 0) { nameArray = elementName.split("/"); } String s = ""; for (int i = 0; i < nameArray.length; i++) { List
<Node> nodes = null; if (i == 0) { nodes = document.selectNodes(nameArray[i]); if (nodes == null || nodes.size() == 0) { Element element = document.addElement(nameArray[i]); if (nameArray.length < 2) { element.setText(value); } } s
= nameArray[i]; } else { // 先判斷該節點前的一個節點是不是循環節點,然後獲取該節點 Element element = null; if (nameArray[i - 1].indexOf("[") > -1) { // 如果是循環節點則,獲取改循環節點的下標 int index = Integer.parseInt(nameArray[i - 1].substring(nameArray[i - 1].indexOf("[") + 1, nameArray[i - 1].indexOf("[") + 2)); element = (Element) document.selectNodes(s).get(index); } else { element = (Element) document.selectSingleNode(s); } // 判斷當前節點是不是循環節點 Element currElement = null; if (nameArray[i].indexOf("[") > -1) { // 如果是循環節點則判斷改循環節點是否存在 int index = Integer.parseInt( nameArray[i].substring(nameArray[i].indexOf("[") + 1, nameArray[i].indexOf("[") + 2)); List<Node> list = element.selectNodes(nameArray[i].substring(0, nameArray[i].indexOf("["))); // 如果節點位置大於list集合的長度,則表示改節點不存在 if (list.size() <= index) { element.addElement(nameArray[i].substring(0, nameArray[i].indexOf("["))); } else { // 當節點位置小list集合長度時,先判斷節點存不存在 currElement = (Element) list.get(index); if (currElement == null) { currElement = element.addElement(nameArray[i].substring(0, nameArray[i].indexOf("["))); } } } else { // 如果不是循環節點 currElement = (Element) element.selectSingleNode(nameArray[i]); if (currElement == null) { currElement = element.addElement(nameArray[i]); if (i == nameArray.length - 1) { currElement.setText(value); } } } if (nameArray[i].indexOf("[") > -1) { s = s + "/" + nameArray[i].substring(0, nameArray[i].length() - 3); } else { s = s + "/" + nameArray[i]; } } } return document; } public Document getDocument() { return document; } public static void main(String[] args) { Document document = DocumentHelper.createDocument(); XMLHelper xmlHelper = new XMLHelper(document); xmlHelper.addElement("root/accounts", "11"); xmlHelper.addElement("root/accounts/account[0]", ""); xmlHelper.addElement("root/accounts/account[1]", ""); xmlHelper.addElement("root/accounts/account[0]/accountNo", "123456"); xmlHelper.addElement("root/accounts/account[1]/password", "111111"); xmlHelper.addElement("root/accounts/userName", "hwy"); xmlHelper.addElement("root/accounts/account[0]/password", "000000"); xmlHelper.addElement("root/accounts/account[1]/accountNo", "999999"); xmlHelper.addElement("root/accounts/account[1]/password", "8888888"); System.out.println(document.asXML()); } }

根據節點的絕對路徑創建Xml