/**
*
*/
package com.pc.cashflow.util;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
/**
* @author Administrator
*
*/
public class JDOMXmlWriter {
/**
* @param args
*/
public static void main(String[] args) {
String xmlPath1 = "TxnDetails/TxId";
String xmlPath = "SettleParties/Pty1/AnyBIC";
String[] paths = {"A/B/C/", "A/B/C/D/", "A/B/E/Cd/Cd/", "A1/"};
String value = "HSBCJPJT";
Element root = new Element("Document");
Document xmlDoc = new Document(root);
Format fmt = Format.getPrettyFormat();
XMLOutputter out = new XMLOutputter(fmt);
for(int i=0;i<paths.length;i++){
String[] tags = paths[i].split("/");
List<Element> tagList = new ArrayList<Element>();
List tagList0 = new ArrayList();
for(int j=0;j<tags.length;j++){
String tagLocation = getTagLocation(tags[j], paths[i]);
if(tagLocationExist(tagLocation, paths, i)==false){
Element tmp = new Element(tags[j]);
tagList.add(tmp);
Map map = new HashMap();String preTag = "";if(j>0)preTag=tags[j-1];
map.put(preTag, tmp);
tagList0.add(map);
}
}
//constructXMLTag(root, tagList, i);
constructXMLTag0(root, tagList0);
}
try {
out.output(xmlDoc, System.out);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/*
List list = new ArrayList();
String[] tags = xmlPath.split("/");
for (String tag:tags) {
Element tmp = new Element(tag);
list.add(tmp);
}
//(Element)(list.get(0)).addContent(list.get(1).addContent(list.get(2).addContent(list.get(3))));
root.addContent(new Element("Test").addContent(new Element("Test2")));
for(Iterator iter = root.getDescendants();iter.hasNext();){
System.out.println(iter.next());
}
for(int i=0;i<list.size()-1;i++){
Element tmp = (Element)list.get(i);
if(i==0){root.addContent(tmp);}
Element tmp1 = (Element)list.get(i+1);
/*
if(i==list.size()-3){
tmp1.setText("aaa");
}
if(i==list.size()-2){
tmp1.setText(value);
}
tmp.addContent(tmp1);
}
/*
//for(int i=list.size();i==0;i--){
int i = 0;
Element tmp = (Element)list.get(i);
Element tmp1 = (Element)list.get(++i);//1
tmp.addContent(tmp1);
Element tmp2 = (Element)list.get(++i);//1 //2
tmp1.addContent(tmp2);
Element tmp3 = (Element)list.get(++i); //2
tmp2.addContent(tmp3);
//}*/
}
//path: A/B/C/D
//tag: C
//return: A/B/C
private static String getTagLocation(String tag, String path){
int idx = path.indexOf(tag);
return path.substring(0, idx+tag.length());
}
//paths: A/B/C A/B/C/D
private static boolean tagLocationExist(String tagLocation, String[] paths, int curIdx){
if(curIdx==0)return false;
for(int a=0;a<curIdx;a++){
if(paths[a].startsWith(tagLocation) == true)return true;
}
return false;
}
//1
//1 //2 <------ chain point
//2
private static void constructXMLTag(Element root, List tagList, int init){
System.out.println("-------construct start-------");
if(init==0){
Element parent = (Element)tagList.get(0);
root.addContent(parent);
System.out.println("root appended parent point: " + parent.getName());
if(tagList.size()==1)System.out.println("No chain point.");
for(int i=0;i<tagList.size()-1;i++){
Element tmp = (Element)tagList.get(i);
Element tmp1 = (Element)tagList.get(i+1);
tmp.addContent(tmp1);//<------ chain point
System.out.println("add chain point: " + tmp.getName() + "/" + tmp1.getName());
}
}else{
}
System.out.println("-------construct end-------");
}
//1
//1 //2 <------ chain point
//2
private static void constructXMLTag0(Element root, List tagList){
System.out.println("-------construct start0-------");
for(int i=0;i<tagList.size();i++){
HashMap tmpHm = (HashMap)tagList.get(i);
String preTag = (String)tmpHm.keySet().iterator().next();
Element element = (Element)tmpHm.values().iterator().next();
Element e = findChild(root, preTag);
if(e!=null){
e.addContent(element);//<------ chain point
System.out.println("added chain point: " + e.getName() + "/" + element.getName());
}else{
root.addContent(element);
System.out.println("root appended parent point: " + element.getName());
}
}
System.out.println("-------construct end0-------");
}
private static Element findChild(Element root, String name){
Element ele = null;
for(Iterator iter = root.getDescendants();iter.hasNext();){
Element tmp = (Element)iter.next();
if(tmp.getName().equalsIgnoreCase(name))ele=tmp;
}
return ele;
}
}
JDom
最新推荐文章于 2021-02-24 03:08:42 发布