我利用这种方式只能取到一级节点:package com.mlot.aplc.util.xml;import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;import org.apache.log4j.Logger;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.XMLOutputter;import com.mlot.aplc.admin.web.popedom.action.AdminXmlDispAction;
import com.mlot.aplc.util.io.FileSymbols;public class ObjectToXml {
private final static Logger __logger = Logger.getLogger(ObjectToXml.class);
private ArrayList factList = new ArrayList();
private byte[] getXmlByte(Document doc) {
String str = null;
byte[] temp = null;
XMLOutputter out = new XMLOutputter("\t", true);
out.setEncoding("gb2312");
try {
str = out.outputString(doc);
temp = str.getBytes("gb2312");
} catch (Exception e) {
e.printStackTrace();
}
return temp;
}
private byte[] makeXml(ArrayList list)
{
__logger.debug("有没有进入生成字节码的文件");
if(null != list)
{
Document doc = null;
Element root = null;
Element element = null;
Element element1 = null;
Element element2 = null;
Element element3 = null;
String oneId = null;
String twoId = null;
String threeId = null;
String fourId = null;
Object[] object = list.toArray();
__logger.debug("集合的大小为--->" + object.length);
for(int i = object.length -1; i >= 0; i-- )
{
Node node = (Node)object[i];
if(null == node.getFatherNodeId())
{
__logger.debug("根结点--->");
oneId = node.getId();
__logger.debug("根结点ID-->" + oneId);
__logger.debug("根结点的名称-->" + node.getCname());
doc = new Document(new Element("DSTreeRoot"));
root = doc.getRootElement();
root.setAttribute("CID", node.getId());
root.setAttribute("CNAME", node.getCname());
continue;
}
else
{
if(null != oneId)
{
__logger.debug("一级结点-->");
twoId = node.getId();
if(node.getFatherNodeId().equals(oneId))
{
element = buildElement(node);
root.addContent(element);
}
continue;
}
if(null != twoId)
{
__logger.debug("二级节点--->");
threeId = node.getId();
if(node.getFatherNodeId().equals(twoId))
{
element1 = buildElement(node);
element.addContent(element1);
}
continue;
}
if(null != threeId)
{
__logger.debug("三级节点");
fourId = node.getId();
if(node.getFatherNodeId().equals(threeId))
{
element2 = buildElement(node);
element1.addContent(element2);
}
}
}
}
return getXmlByte(doc);
}
else
{
return null;
}
}
/**
* 得到用户选中的节点:通过jsp页面上的复选框进行权限控制
* @param mainFileName
* @param targetFileName
* @param userSelect
*/
public void makeXmlHelp(String mainFileName, String targetFileName, String[] userSelect)
{
//群组权限IDList
ArrayList userList = null;
Node testNode = new Node();
testNode.setId("xxx");
if(null != userSelect)
{
userList = new ArrayList();
for(int i = 0; i < userSelect.length; i++)
{
userList.add(userSelect[i]);
}
// 群组权限对象List
if(null != mainFileName)
{
XmlToObject xmlToObject = new XmlToObject(mainFileName);
ArrayList mainList = xmlToObject.getAllList();
//查询用户选中的对象
Object[] mainObject = mainList.toArray();
for(int i = 0; i < mainObject.length; i++)
{
Node node = (Node)mainObject[i];
if(userList.contains(node.getId()))
{
factList.add(node);
}
}
}
}
xunzhaoFaterNode(mainFileName);
Collections.sort(factList);
for(Iterator or = factList.iterator(); or.hasNext();)
{
Node node = (Node)or.next();
__logger.debug("节点ID-->" + node.getId());
// __logger.debug("节点名称-->" + node.getCname());
__logger.debug("节点的父结点-->" + node.getFatherNodeId());
}
buildXmlFile("xxxx", factList);
}
/**
* 得到所有的父结点:所有的父结点的href属性均为空,
* @param mainFileName
*/
public void xunzhaoFaterNode(String mainFileName)
{
XmlToObject xmlToObject = new XmlToObject(mainFileName);
ArrayList mainArrayList = xmlToObject.getAllList();
Object[] mainObject = mainArrayList.toArray();
for(int i = 0; i < mainObject.length; i++)
{
Node mainNode = (Node)mainObject[i];
if(mainNode.getHref() == null)
{
factList.add(mainNode);
}
}
}
//生成结点
private static Element buildElement(Node node)
{
Element element = new Element("DSTree");
element.setAttribute("CID", node.getId());
element.setAttribute("CNAME", node.getCname());
if(null != node.getHref())
{
element.setAttribute("href",node.getHref());
}
return element;
}
public void buildXmlFile(String fileName, ArrayList treeList)
{
try
{
byte[] fileByte = makeXml(treeList);
String xmlFile = new String(fileByte);
__logger.debug("生成的xml内容为" + xmlFile);
// String fileDir = fileName;
// FileWriter file = new FileWriter(fileDir);
// file.write(xmlFile);
// return true;
}catch(Exception e)
{
__logger.debug("文件抛出异常------------>");
}
}
}
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;import org.apache.log4j.Logger;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.XMLOutputter;import com.mlot.aplc.admin.web.popedom.action.AdminXmlDispAction;
import com.mlot.aplc.util.io.FileSymbols;public class ObjectToXml {
private final static Logger __logger = Logger.getLogger(ObjectToXml.class);
private ArrayList factList = new ArrayList();
private byte[] getXmlByte(Document doc) {
String str = null;
byte[] temp = null;
XMLOutputter out = new XMLOutputter("\t", true);
out.setEncoding("gb2312");
try {
str = out.outputString(doc);
temp = str.getBytes("gb2312");
} catch (Exception e) {
e.printStackTrace();
}
return temp;
}
private byte[] makeXml(ArrayList list)
{
__logger.debug("有没有进入生成字节码的文件");
if(null != list)
{
Document doc = null;
Element root = null;
Element element = null;
Element element1 = null;
Element element2 = null;
Element element3 = null;
String oneId = null;
String twoId = null;
String threeId = null;
String fourId = null;
Object[] object = list.toArray();
__logger.debug("集合的大小为--->" + object.length);
for(int i = object.length -1; i >= 0; i-- )
{
Node node = (Node)object[i];
if(null == node.getFatherNodeId())
{
__logger.debug("根结点--->");
oneId = node.getId();
__logger.debug("根结点ID-->" + oneId);
__logger.debug("根结点的名称-->" + node.getCname());
doc = new Document(new Element("DSTreeRoot"));
root = doc.getRootElement();
root.setAttribute("CID", node.getId());
root.setAttribute("CNAME", node.getCname());
continue;
}
else
{
if(null != oneId)
{
__logger.debug("一级结点-->");
twoId = node.getId();
if(node.getFatherNodeId().equals(oneId))
{
element = buildElement(node);
root.addContent(element);
}
continue;
}
if(null != twoId)
{
__logger.debug("二级节点--->");
threeId = node.getId();
if(node.getFatherNodeId().equals(twoId))
{
element1 = buildElement(node);
element.addContent(element1);
}
continue;
}
if(null != threeId)
{
__logger.debug("三级节点");
fourId = node.getId();
if(node.getFatherNodeId().equals(threeId))
{
element2 = buildElement(node);
element1.addContent(element2);
}
}
}
}
return getXmlByte(doc);
}
else
{
return null;
}
}
/**
* 得到用户选中的节点:通过jsp页面上的复选框进行权限控制
* @param mainFileName
* @param targetFileName
* @param userSelect
*/
public void makeXmlHelp(String mainFileName, String targetFileName, String[] userSelect)
{
//群组权限IDList
ArrayList userList = null;
Node testNode = new Node();
testNode.setId("xxx");
if(null != userSelect)
{
userList = new ArrayList();
for(int i = 0; i < userSelect.length; i++)
{
userList.add(userSelect[i]);
}
// 群组权限对象List
if(null != mainFileName)
{
XmlToObject xmlToObject = new XmlToObject(mainFileName);
ArrayList mainList = xmlToObject.getAllList();
//查询用户选中的对象
Object[] mainObject = mainList.toArray();
for(int i = 0; i < mainObject.length; i++)
{
Node node = (Node)mainObject[i];
if(userList.contains(node.getId()))
{
factList.add(node);
}
}
}
}
xunzhaoFaterNode(mainFileName);
Collections.sort(factList);
for(Iterator or = factList.iterator(); or.hasNext();)
{
Node node = (Node)or.next();
__logger.debug("节点ID-->" + node.getId());
// __logger.debug("节点名称-->" + node.getCname());
__logger.debug("节点的父结点-->" + node.getFatherNodeId());
}
buildXmlFile("xxxx", factList);
}
/**
* 得到所有的父结点:所有的父结点的href属性均为空,
* @param mainFileName
*/
public void xunzhaoFaterNode(String mainFileName)
{
XmlToObject xmlToObject = new XmlToObject(mainFileName);
ArrayList mainArrayList = xmlToObject.getAllList();
Object[] mainObject = mainArrayList.toArray();
for(int i = 0; i < mainObject.length; i++)
{
Node mainNode = (Node)mainObject[i];
if(mainNode.getHref() == null)
{
factList.add(mainNode);
}
}
}
//生成结点
private static Element buildElement(Node node)
{
Element element = new Element("DSTree");
element.setAttribute("CID", node.getId());
element.setAttribute("CNAME", node.getCname());
if(null != node.getHref())
{
element.setAttribute("href",node.getHref());
}
return element;
}
public void buildXmlFile(String fileName, ArrayList treeList)
{
try
{
byte[] fileByte = makeXml(treeList);
String xmlFile = new String(fileByte);
__logger.debug("生成的xml内容为" + xmlFile);
// String fileDir = fileName;
// FileWriter file = new FileWriter(fileDir);
// file.write(xmlFile);
// return true;
}catch(Exception e)
{
__logger.debug("文件抛出异常------------>");
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货