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

## クラス OGNode

- java.lang.Object
- - org.opengion.fukurou.xml.OGNode

- 直系の既知のサブクラス:
    `OGDocument`, `OGElement`

      public class OGNode
      extends java.lang.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) 構想からやり直し
  バージョン
    5.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK6.0,

- - ### フィールドの概要

    フィールド
    修飾子とタイプ | フィールド | 説明
    --- | --- | ---
    `protected static int` | `BUFFER_MIDDLE` | StringBilderなどの初期値を設定します。
    `protected static java.lang.String` | `CR` | システムの改行コードを設定します。

  - ### コンストラクタの概要

    コンストラクタ
    コンストラクタ | 説明
    --- | ---
    `OGNode()` | デフォルトコンストラクター ここでは、NodeType は、List に設定されます。
    `OGNode​(java.lang.String txt)` | テキストノードを構築するためのコンストラクター テキストノードは、簡易的に、内部には、ノードリストではなく文字列を持っています。

  - ### メソッドの概要

    すべてのメソッド インスタンス・メソッド concreteメソッド
    修飾子とタイプ | メソッド | 説明
    --- | --- | ---
    `OGNode` | `addNode​(java.lang.String txt)` | テキストノードをノードリストに追加します。
    `OGNode` | `addNode​(OGNode node)` | ノードをノードリストに追加します。
    `void` | `changeNode​(OGNode orgNode, OGNode newNode)` | ノードリストから、指定のノード(orgNode)を新しいノード(newNode)に置き換えます。
    `void` | `clearNode()` | ノードリストから、すべてのノードを削除します。
    `java.util.List<OGElement>` | `getChildElementList()` | ノードリストから、直下(メンバー)のエレメントのみをリストにして返します。
    `java.util.List<OGElement>` | `getElementList​(java.lang.String qName)` | ノードリストから、下位の階層に存在するすべてのエレメントをリストにして返します。
    `OGNode` | `getNode​(int adrs)` | ノードリストに追加されている、ノードを返します。
    `OGNodeType` | `getNodeType()` | ノードタイプを取得します。
    `int` | `getParentCount()` | 自身にセットされている、親ノードの階層数を返します。
    `OGNode` | `getParentNode()` | 自身にセットされている、親ノードを返します。
    `java.lang.String` | `getText​(int cnt)` | ノードリストの文字列を返します。
    `int` | `nodeSize()` | ノードリストに追加されている、ノードの個数を返します。
    `OGNode` | `removeNode​(int adrs)` | ノードリストから、指定の配列番号の、ノードを削除します。
    `void` | `setNode​(int adrs, OGNode node)` | ノードリストに、ノードをセットします。
    `void` | `setNodeType​(OGNodeType type)` | ノードタイプを設定します。
    `java.lang.String` | `toString()` | オブジェクトの文字列表現を返します。

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

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### フィールドの詳細

    - #### CR

          protected static final java.lang.String CR

      システムの改行コードを設定します。

    - #### BUFFER_MIDDLE

          protected static final int BUFFER_MIDDLE

      StringBilderなどの初期値を設定します。 200
      関連項目:
        定数フィールド値

  - ### コンストラクタの詳細

    - #### OGNode

          public OGNode()

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

    - #### OGNode

          public OGNode​(java.lang.String txt)

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

  - ### メソッドの詳細

    - #### addNode

          public OGNode addNode​(java.lang.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

          public OGNode 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

          public java.util.List<OGElement> getChildElementList()

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

    - #### getElementList

          public java.util.List<OGElement> getElementList​(java.lang.String qName)

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

    - #### setNodeType

          public void setNodeType​(OGNodeType type)

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

    - #### getNodeType

          public OGNodeType getNodeType()

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

    - #### getText

          public java.lang.String getText​(int cnt)

      ノードリストの文字列を返します。 これは、タグで言うところのBODY部に書かれた文字列に相当します。 該当する文字列が、存在しない場合は、空の文字列(ゼロストリング)が返されます。
      パラメータ:
        `cnt` - Nodeの階層
      戻り値:
        ノードリストの文字列(BODY部に書かれた文字列)

    - #### toString

          public java.lang.String toString()

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