2009-04-15 48 views
0

什么是解决这一问题的最有效的方式: 我已经走过了XML文件,并创建了以下一组链接(字符串)的列表:的Java:走过树与树

  • A> B> ç
  • A> b> d
  • 一个>˚F> [I]

和现在正在尝试将XML重建成其原始结构:

<a> 
<b> 
    <c/><d/> 
</b> 
<f>i</f> 
</a> 

任何帮助真的很感谢!

回答

3

您可能不希望使用列表作为此数据结构。您最好创建一个Node类型或类似的东西,它可以包含文本和子节点,以便您可以将数据存储在树/节点层次结构中。一些简单的像这应该做的伎俩:

public class Node { 
    private String text; 
    private List<Node> children = new ArrayList<Node>(); 

    public String getText() { 
     return text; 
    } 

    public void setText(String text) { 
     this.text = text; 
    } 

    public List<Node> getChildren() { 
     return children; 
    } 

} 

应该然后是微不足道的,当你在文件中读取创建这些Node s的树,并使用相同的结构来写退了出去。

0

您需要存储更多关于原始XML结构的信息。例如,这3个列表没有关于子节点顺序的信息。

0

我会使用树型数据结构来保存第一步中的元素(比如亚光解释here)。

而你的表示对我来说还不清楚,你如何区分标签和元素?由于i与标签位于同一列表中,但不是标签。

0

集合不保存文档顺序。您想要以基于范围的表格编码(pre/post/size/level/kind)或沿线的某些东西,基于前缀的架构(如ORDPATH)或基于指针(例如parent/leftsibl/rightsibl/firstchild/node编码)跟踪树结构。