XML ファイルの読み込みが必要な小さなプロジェクトに取り組んでいます。DefaultHandler を拡張し、カスタム TreeRender を使用して XML をツリービューにフォーマットする素敵なコード サンプルを見つけました。コードはコンパイルおよび実行され (常にプラス)、探している開始点が得られますが、コードで理解できないことが 1 つあります。
取得できないコードスニペットは次のとおりです。
public class XmlTreeView extends DefaultHandler {
private DefaultMutableTreeNode _base;
<snip>
@Override
public void startElement(String uri, String localName, String tagName, Attributes attr) throws SAXException {
System.out.println("startElement: uri=" + uri + " localname=" + localName + " tagName=" + tagName );
DefaultMutableTreeNode current = new DefaultMutableTreeNode(tagName);
_base.add(current);
_base = current;
for (int i = 0; i < attr.getLength(); i++) {
// <snip> attribute processing
}
}
このクラスは、_base という名前の DefaultMutableTreeNode を宣言します。startElement() メソッドは、 current という名前の新しい DefaultMutableTreeNode をインスタンス化してから実行します
_base.add(current);
_base = current;
私のすべてのプログラミング知識は、2 番目のステートメントが新しいオブジェクト (現在の) を _base の「変数」に割り当て、最初のステートメントを役に立たなくしていることを教えてくれます。ただし、最初のステートメントを取り出すと、コードが正しく機能しなくなります。実際、どちらかのステートメントを取り出すと、正しく機能しなくなります。要素をツリーに追加するには、両方のステートメントが必要です。
ここで何が起こっているのか説明してもらえますか? 私はそれを理解していません。
前もって感謝します、
スティーブ