パッケージ org.opengion.fukurou.xml

クラス OGNode

java.lang.Object
org.opengion.fukurou.xml.OGNode
直系の既知のサブクラス:
OGDocument, OGElement

public class OGNode extends Object
ノードの基底クラスとなる、OGNode クラスを定義します。 OGElement、OGDocument は、この、OGNode クラスを継承します。 ただし、OGAttributes は、独立しているため、このクラスは継承していません。 最も一般的なノードは、テキストノードであり、 OGNode は、enum OGNodeType で区別される状態を持っています。 その内、OGElement と OGDocument は、サブクラスになっています。 OGNodeType は、それぞれ、再設定が可能です。 例えば、既存のエレメントやノードに対して、コメントタイプ(Comment)を指定すると、 ファイル等への出力時にコメントとして出力されます。   List   :内部に、OGNode の ArrayList を持つ   Text   :内部は、文字列の BODY 部分を持つ   Comment  :内部は、文字列であるが、toString() 時には、コメント記号を前後に出力する。   Cdata   :内部は、TextNodeのArrayList を持つ、toString() 時には、Cdataを前後に出力する。   Element  :タグ名、属性、OGNode の ArrayList の入れ子状態をもつ   Document :トップのElement として、read/write するときに使用。構造は、唯一の OGElement を持つ List タイプ
変更履歴:
5.1.8.0 (2010/07/01) 新規作成, 5.6.1.2 (2013/02/22) 構想からやり直し
導入されたバージョン:
JDK6.0,
  • フィールドの概要

    フィールド
    修飾子とタイプ
    フィールド
    説明
    protected static final int
    StringBilderなどの初期値を設定します。
    protected static final String
    システムの改行コードを設定します。
  • コンストラクタの概要

    コンストラクタ
    コンストラクタ
    説明
    デフォルトコンストラクター ここでは、NodeType は、List に設定されます。
    テキストノードを構築するためのコンストラクター テキストノードは、簡易的に、内部には、ノードリストではなく文字列を持っています。
    OGNodeTypeを指定したコンストラクター 基本的には、Element かDocument のケースです。
  • メソッドの概要

    修飾子とタイプ
    メソッド
    説明
    テキストノードをノードリストに追加します。
    ノードをノードリストに追加します。
    void
    changeNode(OGNode orgNode, OGNode newNode)
    ノードリストから、指定のノード(orgNode)を新しいノード(newNode)に置き換えます。
    void
    ノードリストから、すべてのノードを削除します。
    ノードリストから、直下(メンバー)のエレメントのみをリストにして返します。
    ノードリストから、下位の階層に存在するすべてのエレメントをリストにして返します。
    getNode(int adrs)
    ノードリストに追加されている、ノードを返します。
    ノードタイプを取得します。
    int
    自身にセットされている、親ノードの階層数を返します。
    自身にセットされている、親ノードを返します。
    getText(int cnt)
    ノードリストの文字列を返します。
    int
    ノードリストに追加されている、ノードの個数を返します。
    removeNode(int adrs)
    ノードリストから、指定の配列番号の、ノードを削除します。
    void
    setNode(int adrs, OGNode node)
    ノードリストに、ノードをセットします。
    void
    ノードタイプを設定します。
    オブジェクトの文字列表現を返します。

    クラスから継承されたメソッド java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • フィールド詳細

    • CR

      protected static final String CR
      システムの改行コードを設定します。
    • BUFFER_MIDDLE

      protected static final int BUFFER_MIDDLE
      StringBilderなどの初期値を設定します。 200
      関連項目:
  • コンストラクタの詳細

    • OGNode

      public OGNode()
      デフォルトコンストラクター ここでは、NodeType は、List に設定されます。
    • OGNode

      public OGNode(OGNodeType type)
      OGNodeTypeを指定したコンストラクター 基本的には、Element かDocument のケースです。
      パラメータ:
      type - OGNodeTypeのenum(List,Text,Comment,Cdata,Element,Document)
      変更履歴:
      8.5.3.2 (2023/10/13) JDK21対応。警告: [this-escape] サブクラスが初期化される前の'this'エスケープの可能性があります
    • OGNode

      public OGNode(String txt)
      テキストノードを構築するためのコンストラクター テキストノードは、簡易的に、内部には、ノードリストではなく文字列を持っています。
      パラメータ:
      txt - テキストノードの設定値
      変更履歴:
      5.6.1.2 (2013/02/22) 内部テキストがない場合のタグの終了時にスペースは入れない。 ここでは、NodeType は、Text に設定されます。 ただし、引数のテキストが null のNodeType は、List に設定されます。
  • メソッドの詳細

    • addNode

      public OGNode addNode(String txt)
      テキストノードをノードリストに追加します。 内部的にテキストノードを構築して、リストに追加しています。 戻り値は、StringBuilder#append(String) の様に、連結登録できるように 自分自身を返しています。 テキストノードに、この処理を行うと、エラーになります。 一旦、テキストノードとして作成したノードには、ノードを追加できません。
      パラメータ:
      txt - テキストノードの設定値
      戻り値:
      自分自身(this)のノード
      このメソッドは、nullを返しません
    • addNode

      public OGNode addNode(OGNode node)
      ノードをノードリストに追加します。 追加するノードの親として、自分自身を登録します。 なお、同じオブジェクトを、複数の親に追加する場合(ノードリストには追加可能)は、 親ノードは、最後に登録されたノードのみが設定されます。 テキストノードに、この処理を行うと、エラーになります。 一旦、テキストノードとして作成したノードには、ノードを追加できません。
      パラメータ:
      node - ノード
      戻り値:
      自分自身(this)のノード
      このメソッドは、nullを返しません
    • nodeSize

      public int nodeSize()
      ノードリストに追加されている、ノードの個数を返します。
      戻り値:
      ノードリストの数
    • getNode

      public OGNode getNode(int adrs)
      ノードリストに追加されている、ノードを返します。 ノードの指定には、配列番号を使用します。 ノードの個数は、事前に、nodeSize() で調べて置いてください。 当然、テキストノードの場合は、nodeSize()==0 なので、 このメソッドでは取得できません。
      パラメータ:
      adrs - ノードリストの位置
      戻り値:
      指定の配列番号のノード
    • setNode

      public void setNode(int adrs, OGNode node)
      ノードリストに、ノードをセットします。 ノードリストの指定のアドレスに、ノードをセットします。 これは、追加ではなく置換えになります。 ノードの指定には、配列番号を使用します。 ノードの個数は、事前に、nodeSize() で調べて置いてください。
      パラメータ:
      adrs - ノードリストの位置
      node - セットするノード
    • getParentNode

      自身にセットされている、親ノードを返します。 親ノードは、自身のオブジェクトに、一つしか設定できません。 これは、オブジェクトとして、同一ノードを、複数の親ノードに 追加した場合(これは、ノードリストへの追加なので可能)最後に追加した 親ノードのみ、保持していることになります。 XML を構築するときは、同一のノードであっても、毎回、作成しなおさないと、 親ノードを見つけて、何かを行う場合には、おかしな動きをすることになります。 なお、ノードオブジェクト自体が、親ノードから削除されても、自身の 親ノード情報は保持し続けています。 ある Element から削除したノードを別のElementに追加すると、その時点で、 親ノードも更新されます。
      戻り値:
      親ノード
    • getParentCount

      public int getParentCount()
      自身にセットされている、親ノードの階層数を返します。 自身のオブジェクトに設定されている親ノードを順番にさかのぼって、 何階層あるか返します。 これは、getText(int) の引数に使えます。 親ノードがひとつもない場合、つまり自身が最上位の場合は、0 が返されます。
      戻り値:
      自身の階層
    • removeNode

      public OGNode removeNode(int adrs)
      ノードリストから、指定の配列番号の、ノードを削除します。 ノードの指定には、配列番号を使用します。 ノードの個数は、事前に、nodeSize() で調べて置いてください。
      パラメータ:
      adrs - ノードリストの位置
      戻り値:
      削除されたノード
    • clearNode

      public void clearNode()
      ノードリストから、すべてのノードを削除します。 これは、ノードリストをクリアします。
    • changeNode

      public void changeNode(OGNode orgNode, OGNode newNode)
      ノードリストから、指定のノード(orgNode)を新しいノード(newNode)に置き換えます。 ノードは、それぞれ、ノードが作成された順番で、ユニークな番号を持っています。 その番号を元に、ノードを探し出して、置き換えます。 通常の、XMLパースから作成されたノードは、すべて一意にユニーク番号が振られますが、 新しくつったノードを複数のノードと置き換える場合、置き換えられた後のノードは、 オブジェクトそのものが、同一になるため、注意が必要です。
      パラメータ:
      orgNode - 置換元のオリジナルノード
      newNode - 置換する新しいノード
    • getChildElementList

      ノードリストから、直下(メンバー)のエレメントのみをリストにして返します。 ノードリストの第一レベルで、エレメントのみを返します。 通常は、あるエレメントを、getElementList( String ) 等で検索した後、その子要素を 取り出す場合に使用します。 該当するエレメントが、なにも存在しない場合は、空のリストオブジェクトが返されます。
      戻り値:
      直下(メンバー)のエレメントのリスト
    • getElementList

      ノードリストから、下位の階層に存在するすべてのエレメントをリストにして返します。 エレメントは、名前を指定して検索します。 該当するエレメントが、なにも存在しない場合は、空のリストオブジェクトが返されます。
      パラメータ:
      qName - エレメントの名前
      戻り値:
      下位の階層に存在するすべてのエレメントのリスト
    • setNodeType

      public void setNodeType(OGNodeType type)
      ノードタイプを設定します。 ノードタイプとは、List , Text , Comment , Cdata , Element , Document などの ノードの種別を表す enum タイプです。 基本的には、オブジェクトの取得時に、ファクトリメソッド経由であれば、自動的に設定 されています。 ここでは、可変設定できます。 例えば、既存のエレメントやノードに対して、コメントタイプ(Comment)を指定すると、 ファイル等への出力時にコメントとして出力されます。 null を指定すると、なにも処理されません。
      パラメータ:
      type - enumのOGNodeType
      関連項目:
    • getNodeType

      ノードタイプを取得します。 ノードタイプとは、List , Text , Comment , Cdata , Element , Document などの ノードの種別を表す enum タイプです。 基本的には、オブジェクトの取得時に、ファクトリメソッド経由であれば、自動的に設定 されています。
      戻り値:
      ノードタイプ
      関連項目:
    • getText

      public String getText(int cnt)
      ノードリストの文字列を返します。 これは、タグで言うところのBODY部に書かれた文字列に相当します。 該当する文字列が、存在しない場合は、空の文字列(ゼロストリング)が返されます。
      パラメータ:
      cnt - Nodeの階層
      戻り値:
      ノードリストの文字列(BODY部に書かれた文字列)
      変更履歴:
      8.5.5.1 (2024/02/29) switch文にアロー構文を使用
    • toString

      public String toString()
      オブジェクトの文字列表現を返します。 文字列は、OGNodeType により異なります。 Comment ノードの場合は、コメント記号を、Cdata ノードの場合は、CDATA を つけて出力します。
      オーバーライド:
      toString クラス内 Object
      戻り値:
      このオブジェクトの文字列表現
      関連項目:
      このメソッドは、nullを返しません