RAD Studio XE4(Delphi) で XML データを作成する方法(Mac OS X 対応版)

RAD Studio XE4(Delphi) を用いてゼロから XML データを作成する方法についてのメモ。
昨日の記事と違い、この記事の方法で作ったプログラムは、Mac OS X 上でも動作します。

↓最終的にできる XML ファイルはこんなヤツです(Chrome で開いたところ)。
Delphi XML Mac OS X Chrome

↓一応アプリを Mac OS X で実行したところも。
Delphi XML App Mac OS X

手順

  1. Form 上に TXMLDocument コンポーネントを配置
  2. TXMLDocument.DOMVendor を ADOM XML v4 に設定
  3. Xml.Win.msxmldom が unit に含まれていたら削除
  4. ボタンなどのイベントハンドラに次のコードを記述し、実行♪
    [code lang=’delphi’] procedure TForm1.Button1Click(Sender: TObject);
    var
    RootNode, ChildNode: IXMLNode;
    begin
    //XMLDocument1.Encoding := ‘UTF-8’;
    RootNode := XMLDocument1.AddChild(‘root’);
    ChildNode := RootNode.AddChild(‘childnode’);
    ChildNode.Text := ‘childnode.text’;
    ChildNode.Attributes[‘attr1’] := ‘attrribute.text’;
    //XMLDocument1.XML[0] := ‘< ?xml version="1.0" encoding="UTF-8"?>‘;
    Memo1.Lines := XMLDocument1.XML;
    end;

    procedure TForm2.Button2Click(Sender: TObject);
    begin
    caption := ExtractFilePath(ParamStr(0)) + ‘test.xml’;
    XMLDocument1.SaveToFile(ExtractFilePath(ParamStr(0)) + ‘test.xml’);
    end;
    [/code]

このプログラムでのポイントは2点。

1点目は、TXMLDocument.DOMVendor を ADOM XML v4 に設定すること。
MSXML は Windows でしか利用できないからです。

2点目は、XML のエンコードです。
DOMVendor に ADOM XML v4 を指定した TXMLDocument は、ノードの追加・削除などの操作を行うと、なぜか Encoding が UTF-16LE となる仕様の様です。
ですので、データ作成の最後に XMLDocument1.XML[0] := ‘< ?xml version="1.0" encoding="UTF-8"?>‘; と XML ヘッダーを変更しています。
XMLDocument1.Encoding := ‘UTF-8’; をコメントアウトで残しているのは、どこで指定しても無意味だったことへの注意のためです。

XMLDocument1.SaveToFile() メソッドを使用すれば、きちんと XML ヘッダーが UTF-8 で保存されました。

なお、ExtractFilePath(ParamStr(0)) すると .app ファイルの中に保存されることになるので、Finder のコンテクスト メニューから「パッケージの内容を表示」を選択して XML ファイルを確認する必要があります。

参考:
Createing XML files with Delphi and FireMonkey on Mac
WSDL XML rendered by ‘ADOM XML v4’ in Delphi XE2

10年集客し続けられるサイトを、ワードプレスで自作する9つのポイント プレゼント

【最後まで読んでくれたあなたに】

あなたは、24時間365日、自分の代わりに集客し続けてくれるWebサイトを作りたい!と思ったことはありませんか?

私はこれまで500以上のWebサイトの構築と運営のご相談に乗ってきましたが、Webサイトを作ってもうまく集客できない人には、ある一つの特徴があります。

それは、「先を見越してサイトを構築していないこと」です。
Webサイトで集客するためには、構築ではなく「どう運用するか」が重要です。

しかし、重要なポイントを知らずにサイトを自分で構築したり、業者に頼んで作ってもらってしまうと、あとから全く集客に向いていないサイトになっていたということがよく起こります。

そこで今回、期間限定で
『10年集客し続けられるサイトをワードプレスで自作する9つのポイント』
について、過去に相談に乗ってきた具体的な失敗事例と成功事例を元にしてお伝えします。

・ワードプレスを使いこなせるコツを知りたい!
・自分にピッタリのサーバーを撰びたい!
・無料ブログとの違いを知りたい!
・あとで悔しくならない初期設定をしておきたい!
・プラグイン選びの方法を知っておきたい!
・SEO対策をワードプレスで行うポイントを知りたい!
・自分でデザインできる方法を知りたい!

という方は今すぐ無料でダウンロードしてください。

期間限定で、無料公開しています。

※登録後に表示される利用条件に沿ってご利用ください

RAD Studio XE4(Delphi) で XML データを作成する方法(Mac OS X 対応版)” に対して4件のコメントがあります。

  1. 高橋智宏 より:

    QuaityCentralの
    http://qc.embarcadero.com/wc/qcmain.aspx?d=80008
    と同じだと思います。
    以下のコードを参考にしてみしてください。

    procedure TForm1.Button1Click(Sender: TObject);
    var
    RootNode, ChildNode: IXMLNode;
    begin
    XMLDocument1.Active := True;
    XMLDocument1.Version := ‘1.0’;
    XMLDocument1.Encoding := ‘UTF-8’;
    RootNode := XMLDocument1.AddChild(‘root’);
    ChildNode := RootNode.AddChild(‘childnode’);
    ChildNode.Text := ‘childnodeてきすと’;
    ChildNode.Attributes[‘attr1’] := ‘attrribute.text’;
    end;

    procedure TForm1.Button2Click(Sender: TObject);
    begin
    // UnicodeString(UTF-16)型として取り出すが、encoding値をUTF-8にする場合
    Memo1.Text := StringReplace(XMLDocument1.XML.Text,
    ”,
    ”,
    [rfReplaceAll]);

    // UTF-8のXMLファイルとして保存する場合
    // が自動で追加される
    XMLDocument1.SaveToFile(ExtractFilePath(ParamStr(0)) + ‘test.xml’);
    end;

  2. 高橋智宏 より:

    あ、StringReplaceの第2と第3のパラメータが、投稿時に消されてしまいましたね。
    http://qc.embarcadero.com/wc/qcmain.aspx?d=80008
    のコードを参考にして、UTF-16LEからUTF-8に置き換えてください。

  3. 高橋智宏 より:

    あと、
    // が自動で追加される
    の部分も消されましたね。
    encoding=’UTF-8’のXML ヘッダーが自動で追加されます。

  4. Kryu^2 より:

    >高橋さん
    コメントありがとうございます。

    記事を修正しました。

コメントを残す