関連記事
- 【memory leak】メモリーリーク発生...ドロドロドロ 【2025年10月27日(月)】
- う~~忙しい!あ~~忙しい!! 【2025年09月24日(水)】
- 【#ChatGPT】ChatGPTのヤロー(怒 SJIS変換サンプルコード,嘘コード吐いてやがった.原因対応に2時間も悩んだぞー 【2025年02月22日(土)】
- ぎんゆぅ~さんの更新頻度が落ちているときは仕事炎上中(爆 【2025年01月09日(木)】
- 仕事が納まった,のか?一応,拘束解除命令が出たモルモルモル 【2024年12月27日(金)】
ここのページにサンプルがありまして
コードを抜粋しておきます
procedure SaveXMLToFile(FileName: TFileName);
var
lStringList: TStringList;
Writer: IMXWriter;
Reader: IVBSAXXMLReader;
begin
Writer := CoMXXMLWriter.Create;
Reader := CoSAXXMLReader.Create;
Writer.byteOrderMark := True;
Writer.omitXMLDeclaration := False;
Writer.indent := True;
Reader.contentHandler := Writer as IVBSAXContentHandler;
Reader.dtdHandler := Writer as IVBSAXDTDHandler;
Reader.errorHandler := Writer as IVBSAXErrorHandler;
Reader.putProperty('http://xml.org/sax/properties/lexical-handler', Writer);
Reader.putProperty('http://xml.org/sax/properties/declaration-handler', Writer);
Reader.parse(FDoc);
lStringList := TStringlist.Create;
lStringList.Text := Writer.output;
lStringList.SaveToFile(FileName);
end;
んで,お手軽にインデント付きでXMLが出力できるんですが…XMLファイルの先頭が必ず
<?xml version="1.0" encoding="UTF-16" standalone="no"?>に
エンコード,UTF-8で出したいのに,UTF-16でしか,出力できない感じ orz
んで,まえ,学校プロジェクトで吐き出していたXML@VC++版は,エンコードが,綺麗にS-JISと出てたよなぁ~
と思い出し…
んで,つらつら調べたら
エンコードを変えるには,IStreamを使うしか,手がなさそうな感じ…
VC++版を気合入れて,Delphi版へ書き換えてみましたわぁ~
あ,外部のpasファイルがいりますんで,注意!
//uses ShLwApi;
//**********************************************
//インデントつきでXMLの保存
//
//**********************************************
procedure TClaimOutput.SaveIndentXML(fname: string; pDoc: IXMLDOMDocument);
var
stmFile : IStream;
wrt : IMXWriter;
rdr : IVBSAXXMLReader;
begin
SHCreateStreamOnFile(
PChar(fname),
STGM_READWRITE or STGM_SHARE_DENY_WRITE or STGM_CREATE,
stmFile
);
wrt := CoMXXMLWriter.Create;
wrt.indent := True;
wrt.encoding := 'utf-8';
wrt.version := '1.0';
wrt.output := stmFile;
rdr := CoSAXXMLReader.Create;
rdr.contentHandler := wrt as IVBSAXContentHandler;
rdr.parse(pDoc);
end;
SHCreateStreamOnFile()を利用するため,ShLwApi.pasがいりますDelphi5じゃ,なかったです
んで,ここから,ダウンロードしてきました
とりあえず,インデント付きでXMLは出力されていますわぁ~~♪

コメント
【#特別重大報道】存立危機事態オワタ:オヤジが亡くなったので諸々の行事を片してきたのぢゃ
【相続祭り】ドコモ光の解約を失敗した!ドコモは契約が無いって言うてるが...
【#大雪】大雪に対する国土交通省発表(25/12/2)
【#特別重大報道】存立危機事態キター!有事発生ぢゃ!!なので,ぎんゆぅ~さんはしばらくお休みしまする
21年ぶりに新規航路 宮崎港に東京港と結ぶ貨物専用の定期航路開設へ
【#クマ】「泳ぐ宝石」ニシキゴイ、クマに襲われる…新潟県小千谷市のいけす
【クマ】クマによる人的被害、生活圏7割 環境省まとめ、出没は最多2万件