2009-04-15 4 views
0

するためにトラバースツリーはこの問題を解決するための最も効率的な方法は何ですか: 私はXMLファイルを横断してリンク(文字列)のリストの次のセットを作成しました:のJava:ツリー

  • > B> C
  • > 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秒のツリーを作成するのは簡単であるべきであり、それを書き戻すために同じ構造を使用する:このような単純なものはトリックを行う必要があります。

0

元のXMLの構造に関する詳細情報を保存する必要があります。これらの3つのリストは、例えば、子ノードの順序に関する情報を持たない。

0

最初の手順で要素を保持するにはツリーデータ構造を使用します(mattはhereを説明しています)。

あなたの表現は私には分かりませんが、タグと要素をどのように区別していますか? iはタグと同じリストに保持されていますが、タグではありません。

0

セットはドキュメントの順序を保持しません。範囲ベースの表形式エンコーディング(pre/post/size/level/kind)または行に沿ったもの、つまりORDPATHのようなプレフィックスベースのスキーマ、またはポインタに基づくparent/leftsibl/rightsibl/firstchild/node -encodingのようなツリー構造を追跡する必要があります。

関連する問題