タイトル | : Re: DOMでXMLをUTF-8Nで保存する方法 |
記事No | : 1845 |
投稿日 | : 2005/06/21(Tue) 20:48 |
投稿者 | : 魔界の仮面弁士 |
泥臭い方法しか思いつきませんでした……。 もっとスマートな方法があるのかな。
'--------------- Dim UTF8Bin() As Byte
'元になるXML Dim Doc As New Xml.XmlDocument() Doc.LoadXml("<?xml version='1.0' encoding='UTF-8'?><くぅた />")
'バイト配列に取得 Dim DocBin As New IO.MemoryStream() Doc.Save(DocBin) UTF8Bin = DocBin.ToArray() DocBin.Close()
'先頭に UTF-8 のBOMが含まれているか確認 Dim hasBOM As Boolean = True Dim BOM() As Byte = System.Text.Encoding.UTF8.GetPreamble() For Each B As Byte In BOM Dim P As Integer If UTF8Bin(P) <> B Then hasBOM = False Exit For Else P += 1 End If Next
'BOMが含まれていたら、取り除く If hasBOM Then Dim UTF8N(UTF8Bin.GetUpperBound(0) - BOM.Length) As Byte Array.Copy(UTF8Bin, BOM.Length, UTF8N, 0, UTF8N.Length) UTF8Bin = UTF8N Erase UTF8N End If
'確認のため、ファイルに出力 With New BinaryWriter(New FileStream("C:\UTF8.XML", FileMode.Create)) .Write(UTF8Bin) .Close() End With
|