関連記事
- 今週もひたすらモノ書き #JAVA 祭りがまだまだ続く そろそろC#を書かせろー 【2024年12月04日(水)】
- 【#Assembler】結局x64のアセンブラでゴニョゴニョと書き始めたオイラはバカかっ!(爆 【2024年05月13日(月)】
- 【#VCPP #VisualStudio】VS2022のVC 64ビットコンパイルでインラインアセンブラが使えなくなってるぞー 【2024年05月10日(金)】
- 【#CPP】出先でC++にてライブラリの緊急実装!脳死したーキョムリすぎるー 【2024年01月15日(月)】
- 【C#】謎な改造アプリ,SIMD命令を導入して高速化しようか,思案中 【2023年11月14日(火)】
ここのページにサンプルがありまして
コードを抜粋しておきます
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は出力されていますわぁ~~♪
コメント
外は1℃しか無いぞー真冬キター(24/12/9)
【訃報】俳優 中山美穂さん死去 54歳 東京・渋谷の自宅で 警視庁
【#閃輝暗点】閃輝暗点が始まった!いつもどおり目が見えなくなってるー(汗
【#イプシロン】イプシロンSロケット 燃焼試験中に爆発事故発生
あっちもこっちも風邪が流行ってるの.外に出たら感染する勢い!
【訃報】俳優 火野正平さん死去 75歳
【地震】日向灘でM4.4の地震
【#第三次世界大戦】ウクライナ空軍 “ICBM1発がロシア南部から発射された”
司法省 “グーグルはクローム売却を” 裁判所に要求へ 米報道
最近,仕事がずっと激しい...ドロドロドロ