xml节点为
<?xml version="1.0" encoding="UTF-8"?> <item text="人物" check="false" id="1244744798"> <item text="宗教人物" check="false" id="1459560311"> <item text="神话人物" check="false" id="748188040"> <item text="西王母" check="false" id="1760385975"/> <item text="女娲" check="false" id="112887725"/> <item text="伏羲" check="false" id="1564822548"/> <item text="仙女" check="false" id="1809977107"/> <item text="东王公" check="false" id="1953239830"/> </item> </item> </item>
Java程序代码
static List<String> Ontologys = new ArrayList<String>(500);
/**
* 按先根顺序生成树
*
* @param xmlTreePath
* @return
*/
public String generatePreRootOrderTree(String xmlTreePath)
{
Element NewTreeRoot = XmlHelper.loadXmlFile(FileArray.Tree_Xml).getRootElement();
nestedTree(NewTreeRoot);
XmlHelper.saveXmlFile(NewTreeRoot.getDocument(), FileArray.PreRootOrderTree_Xml);
return "保存了文件" + FileArray.PreRootOrderTree_Xml;
}
@SuppressWarnings("unchecked")
private void nestedTree(Element tree)
{
List<Element> elements = tree.selectNodes("item[@check=\"false\"]");
if (elements != null && elements.size() > 0)
{
Element e = elements.get(0);
e.attribute("check").setValue("true");
if (!Ontologys.contains(e.attributeValue("text")))
{
Ontologys.add(e.attributeValue("text"));
e.attribute("id").setValue(nestedIndex++ + "");
nestedTree(elements.get(0));
}
else
{
tree.remove(e);
nestedTree(tree);
}
}
else
{
if (tree.getParent() != null) nestedTree(tree.getParent());
}
}
public static void main(String... a)
{
TreeManager tm = TreeManager.getInstance();
System.out.println(tm.generatePreRootOrderTree(FileArray.Tree_Xml));
}
生成的结果:
<?xml version="1.0" encoding="UTF-8"?> <item text="人物" check="true" id="0"> <item text="宗教人物" check="true" id="1"> <item text="神话人物" check="true" id="2"> <item text="西王母" check="true" id="3"/> <item text="女娲" check="true" id="4"/> <item text="伏羲" check="true" id="5"/> <item text="仙女" check="true" id="6"/> <item text="东王公" check="true" id="7"/> </item> </item> </item>