Changeset 451


Ignore:
Timestamp:
Mar 3, 2008, 8:38:25 PM (16 years ago)
Author:
dai
Message:

XmlDocument.Saveメソッドを実装。
Xml文書生成処理を改良。

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

Legend:

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

    r442 r451  
    2626
    2727    Override Function OwnerXmlSupportedIndent( isIndent = False As Boolean, indent = 0 As Long ) As String
    28         Return "<?" + InnerXml + "?>"
     28        Dim crlfStr = ""
     29        If isIndent Then
     30            ' インデントをサポートする場合
     31            crlfStr = Ex"\r\n"
     32        End If
     33        Return "<?" + InnerXml + "?>" + crlfStr
    2934    End Function
    3035End Class
  • trunk/Include/Classes/System/Xml/XmlDocument.ab

    r443 r451  
    3737    'End Sub
    3838
     39
     40    '----------------------------------------------------------------
     41    ' パブリック プロパティ
     42    '----------------------------------------------------------------
     43
     44    /*!
     45    @brief  このノードとそのすべての子ノードを表すマークアップを取得します。
     46    @return このノードとそのすべての子ノードを格納しているマークアップ。
     47    */
     48    Override Function OuterXml() As String
     49        Return This.InnerXml
     50    End Function
     51
     52
     53    '----------------------------------------------------------------
     54    ' パブリック メソッド
     55    '----------------------------------------------------------------
     56
    3957    /*!
    4058    @brief  指定した値を使用して、XmlDeclaration ノードを作成します。
     
    6886
    6987    /*!
    70     @brief  このノードとそのすべての子ノードを表すマークアップを取得します。
    71     @return このノードとそのすべての子ノードを格納しているマークアップ
     88    @brief  指定した文字列を使用してテキストノードを作成します。
     89    @param  text 文字列
    7290    */
    73     Override Function OuterXml() As String
    74         Return This.InnerXml
     91    Function CreateTextNode( text As String ) As XmlText
     92        Return New XmlText( text, This )
    7593    End Function
     94
     95    /*!
     96    @brief  指定したストリームにXML文書を保存する。
     97    @param  stream 保存先のストリーム。
     98    */
     99    Virtual Sub Save( outStream As System.IO.Stream )
     100        Dim xmlStr = InnerXmlSupportedIndent( True )
     101        outStream.Write( xmlStr.StrPtr As *Byte, 0, xmlStr.Length * SizeOf( StrChar ) )
     102    End Sub
     103
     104    /*!
     105    @brief  指定したファイルにXML文書を保存する。
     106    @param  ファイルパス。
     107    */
     108    Virtual Sub Save( filename As String )
     109        Dim fileStream As System.IO.FileStream( filename, System.IO.FileMode.Create )
     110        Save( fileStream )
     111    End Sub
    76112
    77113End Class
  • trunk/Include/Classes/System/Xml/XmlNode.ab

    r443 r451  
    4343    */
    4444    Sub XmlNode( nodeType As XmlNodeType, prefix As String, localName As String, namespaceURI As String, doc As XmlDocument )
     45        This.nodeType = nodeType
    4546        This.prefix = prefix
    4647        This.localName = localName
     
    5758    */
    5859    Sub XmlNode( nodeType As XmlNodeType, data As String, doc As XmlDocument )
     60        This.nodeType = nodeType
    5961        This.prefix = Nothing
    6062        This.localName = Nothing
     
    304306        End If
    305307
    306         If childNodes.Count = 0 Then
     308        If This.childNodes.Count = 0 Then
    307309            Return indentStr + "<" + localName + This.GetAttributesStr() + " />" + crlfStr
    308310        End If
     
    310312        Dim result = ""
    311313
    312         ' 開始タグ
    313         result += indentStr + "<" + localName + This.GetAttributesStr() + ">" + crlfStr
    314 
    315         ' 子ノードリスト
    316         result += InnerXmlSupportedIndent( isIndent, indent + 1 )
    317 
    318         ' 終了タグ
    319         result += indentStr + "</" + localName + ">" + crlfStr
     314        If This.FirstChild.NodeType = XmlNodeType.Text Then
     315            ' 子ノードがテキストのときは開始タグ、終了タグの間にインデントや改行を入れない
     316
     317            ' 開始タグ
     318            result += indentStr + "<" + localName + This.GetAttributesStr() + ">"
     319
     320            ' 子ノードリスト
     321            result += InnerXmlSupportedIndent( isIndent, indent + 1 )
     322
     323            ' 終了タグ
     324            result += "</" + localName + ">" + crlfStr
     325        Else
     326            ' 開始タグ
     327            result += indentStr + "<" + localName + This.GetAttributesStr() + ">" + crlfStr
     328
     329            ' 子ノードリスト
     330            result += InnerXmlSupportedIndent( isIndent, indent + 1 )
     331
     332            ' 終了タグ
     333            result += indentStr + "</" + localName + ">" + crlfStr
     334        End If
    320335
    321336        Return result
  • trunk/Include/Classes/System/Xml/XmlText.ab

    r442 r451  
    1616        XmlCharacterData( XmlNodeType.Text, strData, doc )
    1717    End Sub
     18
     19Protected
     20    Override Function InnerXmlSupportedIndent( isIndent = False As Boolean, indent = 0 As Long ) As String
     21        Return Value
     22    End Function
     23
     24    Override Function OwnerXmlSupportedIndent( isIndent = False As Boolean, indent = 0 As Long ) As String
     25        Return Value
     26    End Function
    1827End Class
    1928
Note: See TracChangeset for help on using the changeset viewer.