Changeset 442 for trunk/Include/Classes


Ignore:
Timestamp:
Feb 28, 2008, 11:06:09 PM (17 years ago)
Author:
dai
Message:

XmlNodeType列挙型を実装

Location:
trunk/Include/Classes/System/Xml
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Include/Classes/System/Xml/XmlAttribute.ab

    r424 r442  
    1010Public
    1111    Sub XmlAttribute( prefix As String, localName As String, namespaceURI As String, doc As XmlDocument )
    12         XmlNode( prefix, localName, namespaceURI, doc )
     12        XmlNode( XmlNodeType.Attribute, prefix, localName, namespaceURI, doc )
    1313    End Sub
    1414End Class
  • trunk/Include/Classes/System/Xml/XmlCharacterData.ab

    r424 r442  
    1313    @brief  コンストラクタ
    1414    */
    15     Sub XmlCharacterData( data As String, doc As XmlDocument )
    16         XmlLinkedNode( data, doc )
     15    Sub XmlCharacterData( nodeType As XmlNodeType, data As String, doc As XmlDocument )
     16        XmlLinkedNode( nodeType, data, doc )
    1717    End Sub
    1818End Class
  • trunk/Include/Classes/System/Xml/XmlDeclaration.ab

    r424 r442  
    1414Public
    1515    Sub XmlDeclaration( version As String, encoding As String, standalone As String, doc As XmlDocument )
    16         XmlLinkedNode( "", "xml", "", doc )
     16        XmlLinkedNode( XmlNodeType.XmlDeclaration, "", "xml", "", doc )
    1717        This.version = version
    1818        This.encoding = encoding
    1919        This.standalone = standalone
    2020    End Sub
     21
     22Protected
     23    Override Function InnerXmlSupportedIndent( isIndent = False As Boolean, indent = 0 As Long ) As String
     24        Return Ex"version=\q" + This.version + Ex"\q encoding=\q" + This.encoding + Ex"\q"
     25    End Function
     26
     27    Override Function OwnerXmlSupportedIndent( isIndent = False As Boolean, indent = 0 As Long ) As String
     28        Return "<?" + InnerXml + "?>"
     29    End Function
    2130End Class
    2231
  • trunk/Include/Classes/System/Xml/XmlDocument.ab

    r424 r442  
    2222    */
    2323    Sub XmlDocument()
    24         XmlNode( "", "#document", "", Nothing )
     24        XmlNode( XmlNodeType.Document, "", "#document", "", Nothing )
    2525    End Sub
    2626
  • trunk/Include/Classes/System/Xml/XmlElement.ab

    r424 r442  
    1010Public
    1111    Sub XmlElement( prefix As String, localName As String, namespaceURI As String, doc As XmlDocument )
    12         XmlLinkedNode( prefix, localName, namespaceURI, doc )
     12        XmlLinkedNode( XmlNodeType.Element, prefix, localName, namespaceURI, doc )
    1313    End Sub
    1414End Class
  • trunk/Include/Classes/System/Xml/XmlLinkedNode.ab

    r424 r442  
    1212    @brief  コンストラクタ
    1313    */
    14     Sub XmlLinkedNode( prefix As String, localName As String, namespaceURI As String, doc As XmlDocument )
    15         XmlNode( prefix, localName, namespaceURI, doc )
     14    Sub XmlLinkedNode( nodeType As XmlNodeType, prefix As String, localName As String, namespaceURI As String, doc As XmlDocument )
     15        XmlNode( nodeType, prefix, localName, namespaceURI, doc )
    1616    End Sub
    1717
     
    1919    @brief  コンストラクタ
    2020    */
    21     Sub XmlLinkedNode( data As String, doc As XmlDocument )
    22         XmlNode( data, doc )
     21    Sub XmlLinkedNode( nodeType As XmlNodeType, data As String, doc As XmlDocument )
     22        XmlNode( nodeType, data, doc )
    2323    End Sub
    2424End Class
  • trunk/Include/Classes/System/Xml/XmlNode.ab

    r424 r442  
    11Namespace System
    22Namespace Xml
     3
     4Enum XmlNodeType
     5    None
     6    Element
     7    Attribute
     8    Text
     9    CDATA
     10    EntifyReference
     11    Entity
     12    ProcessingInstruction
     13    Comment
     14    Document
     15    DocumentType
     16    DocumentFragment
     17    Notation
     18    Whitespace
     19    SignificantWhitespace
     20    EndElement
     21    EndEntity
     22    XmlDeclaration
     23End Enum
    324
    425/*!
     
    1435    ownerDocument As XmlDocument
    1536    value As String
    16 
    17     Function InnerXmlSupportedIndent( isIndent = False As Boolean, indent = 0 As Long ) As String
     37    nodeType As XmlNodeType
     38
     39Public
     40
     41    /*!
     42    @brief  コンストラクタ
     43    */
     44    Sub XmlNode( nodeType As XmlNodeType, prefix As String, localName As String, namespaceURI As String, doc As XmlDocument )
     45        This.prefix = prefix
     46        This.localName = localName
     47        This.namespaceURI = namespaceURI
     48        This.ownerDocument = doc
     49        This.value = Nothing
     50
     51        childNodes = New XmlNodeList()
     52    End Sub
     53
     54    /*!
     55    @brief  コンストラクタ
     56    */
     57    Sub XmlNode( nodeType As XmlNodeType, data As String, doc As XmlDocument )
     58        This.prefix = Nothing
     59        This.localName = Nothing
     60        This.namespaceURI = Nothing
     61        This.ownerDocument = doc
     62        This.value = data
     63
     64        childNodes = Nothing
     65    End Sub
     66
     67
     68    '----------------------------------------------------------------
     69    ' パブリック プロパティ
     70    '----------------------------------------------------------------
     71
     72    /*!
     73    @brief  名前またはインデックスによってアクセスできる属性のコレクションを表します。
     74    */
     75    'Virtual Function Attributes() As XmlAttributeCollection
     76    '   Return attributes
     77    'End Function
     78
     79    /*!
     80    @brief  子ノードリストを返します。
     81    */
     82    Virtual Function ChildNodes() As XmlNodeList
     83        Return childNodes
     84    End Function
     85
     86    /*!
     87    @brief  ノードの最初の子を取得します。
     88    */
     89    Virtual Function FirstChild() As XmlNode
     90        If childNodes.Count = 0 Then
     91            ' 子ノードが1つもないときはNothingを返す
     92            Return Nothing
     93        End If
     94        Return childNodes[0]
     95    End Function
     96
     97    /*!
     98    @brief  子ノードが1つ以上あるかどうかを取得します。
     99    */
     100    Virtual Function HasChildNodes() As Boolean
     101        Return Not ( childNodes.Count = 0 )
     102    End Function
     103
     104    /*!
     105    @brief  このノードの子ノードだけを表すマークアップを取得または設定します。
     106    */
     107    Virtual Function InnerXml() As String
     108        Return InnerXmlSupportedIndent()
     109    End Function
     110
     111    /*!
     112    @brief  ノードのローカル名を取得します。
     113    @return ノードのローカル名。
     114    */
     115    Virtual Function LocalName() As String
     116        return localName
     117    End Function
     118
     119    /*!
     120    @brief  このノードの名前空間 URI を取得します。
     121    @return このノードの名前空間 URI。
     122    */
     123    Virtual Function NamespaceURI() As String
     124        return NamespaceURI
     125    End Function
     126
     127    /*!
     128    @brief  このノードのノードタイプを取得します。
     129    @return このノードのノードタイプ。
     130    */
     131    Virtual Function NodeType() As XmlNodeType
     132        return nodeType
     133    End Function
     134
     135    /*!
     136    @brief  このノードとそのすべての子ノードを表すマークアップを取得します。
     137    @return このノードとそのすべての子ノードを格納しているマークアップ。
     138    */
     139    Virtual Function OuterXml() As String
     140        Return OwnerXmlSupportedIndent()
     141    End Function
     142
     143    /*!
     144    @brief  このノードが属する XmlDocument を取得します。
     145    @return このノードが属する XmlDocument。
     146    */
     147    Virtual Function OwnerDocument() As XmlDocument
     148        Return ownerDocument
     149    End Function
     150
     151    /*!
     152    @brief  このノードの名前空間プリフィックスを取得または設定します。
     153    @return このノードの名前空間プリフィックス。たとえば、プリフィックスは要素 <bk:book> の bk です。プリフィックスがない場合、このプロパティは String.Empty を返します。
     154    */
     155    Virtual Function Prefix() As String
     156        return prefix
     157    End Function
     158
     159   
     160
     161
     162    '----------------------------------------------------------------
     163    ' パブリック メソッド
     164    '----------------------------------------------------------------
     165
     166    /*!
     167    @brief  このノードの子ノードリストの末尾に指定したノードを追加する。
     168    */
     169    Virtual Function AppendChild( newChild As XmlNode ) As XmlNode
     170        childNodes.Add( newChild )
     171        Return newChild
     172    End Function
     173
     174    /*!
     175    @brief  ノードを複製する。
     176    */
     177    Virtual Function Clone() As XmlNode
     178        ' TODO: 実装
     179    End Function
     180
     181    /*!
     182    @brief  派生クラスでオーバーライドされた場合は、ノードの複製を作成する。
     183    */
     184    Virtual Function CloneNode( deep As Boolean ) As XmlNode
     185        ' TODO: 実装
     186    End Function
     187
     188    /*!
     189    @brief  XmlNode のノードに対する Foreachスタイルの反復をサポートします。
     190    */
     191    Virtual Function GetEnumerator() As IEnumerator
     192        ' TODO: 実装
     193    End Function
     194
     195    /*!
     196    @brief  指定したノードを指定した参照ノードの直後に挿入します。
     197    @param  newChild 挿入するXmlNode。
     198            refChild 参照ノードであるXmlNode。newNode は、refNode の後に配置されます。
     199    @return 挿入されるノード。
     200    */
     201    Virtual Function InsertAfter( newChild As XmlNode, refChild As XmlNode ) As XmlNode
     202        ' TODO: 実装
     203    End Function
     204
     205    /*!
     206    @brief  指定したノードを指定した参照ノードの直前に挿入します。
     207    @param  newChild 挿入するXmlNode。
     208            refChild 参照ノードであるXmlNode。newNode は、refNode の前に配置されます。
     209    @return 挿入されるノード。
     210    */
     211    Virtual Function InsertBefore( newChild As XmlNode, refChild As XmlNode ) As XmlNode
     212        ' TODO: 実装
     213    End Function
     214
     215    /*!
     216    @brief  このノードの子ノードのリストの先頭に、指定したノードを追加します。
     217    @param  newChild 挿入するXmlNode。
     218    @return 挿入されるノード。
     219    */
     220    Virtual Function PrependChild( newChild As XmlNode ) As XmlNode
     221        ' TODO: 実装
     222    End Function
     223
     224    /*!
     225    @brief  現在のノードのすべての子ノードと属性の両方、またはそのいずれかを削除します。
     226    */
     227    Virtual Sub RemoveAll()
     228        ' TODO: 実装
     229    End Sub
     230
     231    /*!
     232    @brief  現在のノードのすべての子ノードと属性の両方、またはそのいずれかを削除します。
     233    @param  newChild 削除するXmlNode。
     234    @return 削除されたノード。
     235    */
     236    Virtual Function RemoveChild( oldChild As XmlNode ) As XmlNode
     237        ' TODO: 実装
     238    End Function
     239
     240    /*!
     241    @brief  子ノード oldChild を newChild ノードに置き換えます。
     242    @param  newChild 新しいノード。
     243            oldChild 置換されノード。
     244    @return 置き換えられたノード。
     245    */
     246    Virtual Function ReplaceChild( newChild As XmlNode, oldChild As XmlNode ) As XmlNode
     247        ' TODO: 実装
     248    End Function
     249
     250
     251Protected
     252    Virtual Function InnerXmlSupportedIndent( isIndent = False As Boolean, indent = 0 As Long ) As String
    18253        Dim result = ""
    19254        If Not ActiveBasic.IsNothing( childNodes ) Then
     
    26261    End Function
    27262
    28     Function OwnerXmlSupportedIndent( isIndent = False As Boolean, indent = 0 As Long ) As String
     263    Virtual Function OwnerXmlSupportedIndent( isIndent = False As Boolean, indent = 0 As Long ) As String
    29264        Dim indentStr = ""
    30265        Dim crlfStr = ""
     
    56291        Return result
    57292    End Function
    58 
    59 Public
    60 
    61     /*!
    62     @brief  コンストラクタ
    63     */
    64     Sub XmlNode( prefix As String, localName As String, namespaceURI As String, doc As XmlDocument )
    65         This.prefix = prefix
    66         This.localName = localName
    67         This.namespaceURI = namespaceURI
    68         This.ownerDocument = doc
    69         This.value = Nothing
    70 
    71         childNodes = New XmlNodeList()
    72     End Sub
    73 
    74     /*!
    75     @brief  コンストラクタ
    76     */
    77     Sub XmlNode( data As String, doc As XmlDocument )
    78         This.prefix = Nothing
    79         This.localName = Nothing
    80         This.namespaceURI = Nothing
    81         This.ownerDocument = doc
    82         This.value = data
    83 
    84         childNodes = Nothing
    85     End Sub
    86 
    87 
    88     '----------------------------------------------------------------
    89     ' パブリック プロパティ
    90     '----------------------------------------------------------------
    91 
    92     /*!
    93     @brief  名前またはインデックスによってアクセスできる属性のコレクションを表します。
    94     */
    95     'Virtual Function Attributes() As XmlAttributeCollection
    96     '   Return attributes
    97     'End Function
    98 
    99     /*!
    100     @brief  子ノードリストを返します。
    101     */
    102     Virtual Function ChildNodes() As XmlNodeList
    103         Return childNodes
    104     End Function
    105 
    106     /*!
    107     @brief  ノードの最初の子を取得します。
    108     */
    109     Virtual Function FirstChild() As XmlNode
    110         If childNodes.Count = 0 Then
    111             ' 子ノードが1つもないときはNothingを返す
    112             Return Nothing
    113         End If
    114         Return childNodes[0]
    115     End Function
    116 
    117     /*!
    118     @brief  子ノードが1つ以上あるかどうかを取得します。
    119     */
    120     Virtual Function HasChildNodes() As Boolean
    121         Return Not ( childNodes.Count = 0 )
    122     End Function
    123 
    124     /*!
    125     @brief  このノードの子ノードだけを表すマークアップを取得または設定します。
    126     */
    127     Virtual Function InnerXml() As String
    128         Return InnerXmlSupportedIndent()
    129     End Function
    130 
    131     /*!
    132     @brief  ノードのローカル名を取得します。
    133     @return ノードのローカル名。
    134     */
    135     Virtual Function LocalName() As String
    136         return localName
    137     End Function
    138 
    139     /*!
    140     @brief  このノードの名前空間 URI を取得します。
    141     @return このノードの名前空間 URI。
    142     */
    143     Virtual Function NamespaceURI() As String
    144         return NamespaceURI
    145     End Function
    146 
    147     /*!
    148     @brief  このノードとそのすべての子ノードを表すマークアップを取得します。
    149     @return このノードとそのすべての子ノードを格納しているマークアップ。
    150     */
    151     Virtual Function OuterXml() As String
    152         Return OwnerXmlSupportedIndent()
    153     End Function
    154 
    155     /*!
    156     @brief  このノードが属する XmlDocument を取得します。
    157     @return このノードが属する XmlDocument。
    158     */
    159     Virtual Function OwnerDocument() As XmlDocument
    160         Return ownerDocument
    161     End Function
    162 
    163     /*!
    164     @brief  このノードの名前空間プリフィックスを取得または設定します。
    165     @return このノードの名前空間プリフィックス。たとえば、プリフィックスは要素 <bk:book> の bk です。プリフィックスがない場合、このプロパティは String.Empty を返します。
    166     */
    167     Virtual Function Prefix() As String
    168         return prefix
    169     End Function
    170 
    171    
    172 
    173 
    174     '----------------------------------------------------------------
    175     ' パブリック メソッド
    176     '----------------------------------------------------------------
    177 
    178     /*!
    179     @brief  このノードの子ノードリストの末尾に指定したノードを追加する。
    180     */
    181     Virtual Function AppendChild( newChild As XmlNode ) As XmlNode
    182         childNodes.Add( newChild )
    183         Return newChild
    184     End Function
    185 
    186     /*!
    187     @brief  ノードを複製する。
    188     */
    189     Virtual Function Clone() As XmlNode
    190         ' TODO: 実装
    191     End Function
    192 
    193     /*!
    194     @brief  派生クラスでオーバーライドされた場合は、ノードの複製を作成する。
    195     */
    196     Virtual Function CloneNode( deep As Boolean ) As XmlNode
    197         ' TODO: 実装
    198     End Function
    199 
    200     /*!
    201     @brief  XmlNode のノードに対する Foreachスタイルの反復をサポートします。
    202     */
    203     Virtual Function GetEnumerator() As IEnumerator
    204         ' TODO: 実装
    205     End Function
    206 
    207     /*!
    208     @brief  指定したノードを指定した参照ノードの直後に挿入します。
    209     @param  newChild 挿入するXmlNode。
    210             refChild 参照ノードであるXmlNode。newNode は、refNode の後に配置されます。
    211     @return 挿入されるノード。
    212     */
    213     Virtual Function InsertAfter( newChild As XmlNode, refChild As XmlNode ) As XmlNode
    214         ' TODO: 実装
    215     End Function
    216 
    217     /*!
    218     @brief  指定したノードを指定した参照ノードの直前に挿入します。
    219     @param  newChild 挿入するXmlNode。
    220             refChild 参照ノードであるXmlNode。newNode は、refNode の前に配置されます。
    221     @return 挿入されるノード。
    222     */
    223     Virtual Function InsertBefore( newChild As XmlNode, refChild As XmlNode ) As XmlNode
    224         ' TODO: 実装
    225     End Function
    226 
    227     /*!
    228     @brief  このノードの子ノードのリストの先頭に、指定したノードを追加します。
    229     @param  newChild 挿入するXmlNode。
    230     @return 挿入されるノード。
    231     */
    232     Virtual Function PrependChild( newChild As XmlNode ) As XmlNode
    233         ' TODO: 実装
    234     End Function
    235 
    236     /*!
    237     @brief  現在のノードのすべての子ノードと属性の両方、またはそのいずれかを削除します。
    238     */
    239     Virtual Sub RemoveAll()
    240         ' TODO: 実装
    241     End Sub
    242 
    243     /*!
    244     @brief  現在のノードのすべての子ノードと属性の両方、またはそのいずれかを削除します。
    245     @param  newChild 削除するXmlNode。
    246     @return 削除されたノード。
    247     */
    248     Virtual Function RemoveChild( oldChild As XmlNode ) As XmlNode
    249         ' TODO: 実装
    250     End Function
    251 
    252     /*!
    253     @brief  子ノード oldChild を newChild ノードに置き換えます。
    254     @param  newChild 新しいノード。
    255             oldChild 置換されノード。
    256     @return 置き換えられたノード。
    257     */
    258     Virtual Function ReplaceChild( newChild As XmlNode, oldChild As XmlNode ) As XmlNode
    259         ' TODO: 実装
    260     End Function
    261 
    262293End Class
    263294
  • trunk/Include/Classes/System/Xml/XmlText.ab

    r424 r442  
    1414    */
    1515    Sub XmlText( strData As String, doc As XmlDocument )
    16         XmlCharacterData( strData, doc )
     16        XmlCharacterData( XmlNodeType.Text, strData, doc )
    1717    End Sub
    1818End Class
Note: See TracChangeset for help on using the changeset viewer.