アプリ版:「スタンプのみでお礼する」機能のリリースについて

VB2005で開発しています。
XMLは初めてです。

お役所への申請をXMLファイルで行う必要があるため、そのための処理を作成しようとしています。
・あらかじめお役所が用意したXMLファイルに必要データを挿入し、ファイルを上書き保存しようと思っています。
・申請自体もお役所の用意したソフトを使用して行います。

いろんなデータを挿入する予定なのですが、そもそも該当のXMLファイルを下記のように開いて保存するだけで、お役所側のソフトからXMLファイルを開けなくなってしまいます。
(正常なXMLファイルではありません。と怒られます。)

  'ファイル読み込み
  Dim doc As New XmlDocument()
  doc.Load(XMLFilePath)
  
  '変更保存
  doc.Save(XMLFilePath)


たったこれだけの処理でXMLファイルにどのような変化が生じているのでしょうか??
ちなみにDOMを使用してデータの操作をすることは普通にできます。結果は同じですが・・・。
そもそも開いて閉じただけでどうしてこんなことになるのでしょう(泣)
これって当たり前のことなのでしょうか?

夜通し考えてもわからないので質問させていただきます。
よろしければご教授ください。よろしくお願いします。

A 回答 (1件)

お役所ソフトで作成した オリジナルXMLとVBで作成したXMLファイルを


比較してみればいいのではないですか

Windowsなら FC.EXEっていうファイル比較コマンドがあります

コマンドプロンプトで (ファイル名は適宜修正してください)
FC.EXE 役所.XML VB.XML[ENTER]
または
FC.EXE /B 役所.XML VB.XML[ENTER]

といった使い方をします
    • good
    • 1
この回答へのお礼

日曜日なのにご回答まことにありがとうございました。
おかげさまで何とか問題を回避できました。

今回の原因はVB2005がXMLドキュメントを保存する際に「BOM (Byte Order Mark)」という符号を、ファイルの頭に自動的に付加することが原因だったようです。
http://www.atmarkit.co.jp/aig/01xml/bom.html

教えて頂いたFC.EXEというのは使用しなかったのですがstir131というフリーのバイナリエディタを使用して使用前後のファイルを比較したところ、確かにBOMがファイルの先頭に付加されておりました。

BOMの外し方もさっぱりわからなかったのですが、幸運にも下記に対処方法をアップされている方がいらっしゃいました。
http://hanatyan.sakura.ne.jp/patio/read.cgi?no=150

ちなみにXMLファイルをLoadする際に「PreserveWhitespace」
というプロパティをTrueに設定しておかないと
XMLファイル内に余分な改行や空白が入ってしまうようでした。

他人のお知恵ばかり拝借して何とかなりましたが、文字コードについてもっと勉強しなければと痛感しました。
重要なヒントを与えていただいて誠にありがとうございました。助かりました。

お礼日時:2008/03/03 13:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!