【问题标题】:Java: Traversed Tree to TreeJava:遍历树到树
【发布时间】:2009-04-15 13:01:18
【问题描述】:

解决这个问题最有效的方法是什么: 我遍历了一个 XML 文件并创建了以下一组链接(字符串)列表:

  • a > b > c
  • a > b > d
  • a > f > [i]

现在我正在尝试将 XML 重建为其原始结构:

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

任何帮助将不胜感激!

【问题讨论】:

    标签: java xml parsing


    【解决方案1】:

    您可能不想为此使用列表作为数据结构。您最好创建一个 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;
        }
    
    }
    

    当您读入文件时,创建这些Nodes 的树并使用相同的结构将其写回应该很简单。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        我会使用树数据结构来保存第一步中的元素(就像 matt 解释的 here)。

        你的表示我不清楚,你如何区分标签和元素?由于i 与标签在同一个列表中,但不是标签。

        【讨论】:

          【解决方案4】:

          Set 不保留文档顺序。您希望以基于范围的表格编码 (pre/post/size/level/kind) 或类似的方式跟踪树结构,基于前缀的模式,如 ORDPATH 或基于指针,例如 parent/leftsibl/rightsibl/firstchild/node-encoding .

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-09-15
            相关资源
            最近更新 更多