掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
utf-8形式のXMLファイルをDOMにLoadするには? (ID:100180)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
# ここは sumomo さんの質問に対するスレッドなので、expさんの別質問が # 繋がるのはあまり好ましくは無いのですが、無関係というわけでも無いので、 # このまま回答を続けておきます。 > DomDocument.Loadして、 私が提示したのは Load ではなく LoadXml ですが、それはともかくとして: 注意が必要なのは、元データの文字コードは、特に関係無いという事です。 DOM 自体は、XML データを常に Unicode として処理しますので。 問題となるのは、encoding 指定です。 Set doc = New MSXML2.DOMDocument30 doc.loadXML "<?xml version='1.0' encoding='iso-2022-jp'?><あ/>" doc.save "C:\sample1.xml" 'JISファイルとして保存される doc.replaceChild _ doc.createProcessingInstruction( _ "xml", "version='1.0' encoding='euc-jp'"), _ doc.childNodes(0) doc.save "C:\sample2.xml" 'EUCファイルとして保存される なお、本題からは外れるので詳細は省きますが、XSLT 変換で ストリーム出力する場合には、また別の変換規則が働くようです。 >>> MSXMLは XML Version,3.0 >>> ADODBはMicrosoft ActiveX Data Objects2.5 >>> を参照しています。 >「実行時エラー '5' > プロシージャの呼び出し、または引数が不正です。」 MSXML3 + ADODB 2.5 および MSXML6 + ADODB 2.8 の両方で試しましたが、当方では再現しませんでした。 Private Sub Command1_Click() Dim doc As MSXML2.DOMDocument30 Set doc = New MSXML2.DOMDocument30 doc.async = False doc.loadXML "<?xml version='1.0' encoding='UTF-8'?><祈/>" Dim stm As ADODB.Stream Set stm = New ADODB.Stream stm.Type = adTypeText stm.Charset = "UTF-8" stm.Open doc.save stm stm.SaveToFile "C:\sample.xml", adSaveCreateOverWrite stm.Close End Sub
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.