するためにトラバースツリーはこの問題を解決するための最も効率的な方法は何ですか: 私はXMLファイルを横断してリンク(文字列)のリストの次のセットを作成しました:のJava:ツリー
- > B> C
- > B> D
- > F> [i]は
、今私は、元の構造にXMLを再構築しようとしている:
<a>
<b>
<c/><d/>
</b>
<f>i</f>
</a>
本当にありがとうございます!
するためにトラバースツリーはこの問題を解決するための最も効率的な方法は何ですか: 私はXMLファイルを横断してリンク(文字列)のリストの次のセットを作成しました:のJava:ツリー
、今私は、元の構造にXMLを再構築しようとしている:
<a>
<b>
<c/><d/>
</b>
<f>i</f>
</a>
本当にありがとうございます!
おそらく、このためのデータ構造としてリストを使用したくないでしょう。 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
秒のツリーを作成するのは簡単であるべきであり、それを書き戻すために同じ構造を使用する:このような単純なものはトリックを行う必要があります。
元のXMLの構造に関する詳細情報を保存する必要があります。これらの3つのリストは、例えば、子ノードの順序に関する情報を持たない。
最初の手順で要素を保持するにはツリーデータ構造を使用します(mattはhereを説明しています)。
あなたの表現は私には分かりませんが、タグと要素をどのように区別していますか? i
はタグと同じリストに保持されていますが、タグではありません。
セットはドキュメントの順序を保持しません。範囲ベースの表形式エンコーディング(pre/post/size/level/kind
)または行に沿ったもの、つまりORDPATH
のようなプレフィックスベースのスキーマ、またはポインタに基づくparent/leftsibl/rightsibl/firstchild/node
-encodingのようなツリー構造を追跡する必要があります。