FAQ - 技術的質問: XML
- 一般的質問
- 技術的質問
それぞれの項目についてのお問い合わせは、各項目内の
をクリックしてください。
Question : 077
CachéのオブジェクトデータをXML形式で出力することはできますか?
以下の2つによって、可能です。
(1) 出力したいクラスを、%XML.Adaptorからも継承するように設定
例えば
Class User.test Extends (%Persistent, %Populate)↓
Class User.test Extends (%Persistent, %Populate, %XML.Adaptor)とします。
(2) プログラム中で、%XML.Writerクラスを使用し、出力対象のインスタンスについて
do writer.Object(oid)で出力されます。
具体的な例については、サンプルをご覧ください。
Question : 078
CachéのオブジェクトデータをXMLファイルから取り込むことはできますか?
以下の2つによって、可能です。
(1) インポート対象のクラスを、%XML.Adaptorからも継承するように設定
例えば
Class User.test Extends (%Persistent, %Populate)↓
Class User.test Extends (%Persistent, %Populate, %XML.Adaptor)とします。
(2) プログラム中で、%XML.Readerクラスを使用し、出力対象のインスタンスについて
タグとクラスを関連付け、reader.Nextで取り込みます。
set sc=reader.OpenFile(filename)
do reader.Correlate(tag,class)
while reader.Next(.x,.sc) { do x.%Save() }具体的な例については、サンプルをご覧ください。
Question : 108
%XMLパッケージのクラスを使用して、外部XML文書を読み込んだり、外部XML文書を出力した際に、一部の文字が意図しない文字に化けます。
%XMLパッケージ内の各クラスで外部ファイルとの入出力を行う場合 (%XML.ReaderのOpenFile () メソッドなど)、ファイルの文字コードからUnicodeへの変換 (およびその逆も) はCachéのNLS (National Language Support) ではなく、外部ライブラリ(Xerces-C)から利用される外部ユーティリティ (ICU) になります。このため、一部のベンダ依存コードでNLSの定義とは異なる変換が行われる場合があります。
例)
Shift_JIS の全角マイナス "-" (0x817c) はCachéのNLSではUnicode 0xFF0D に対応付けられていますが、上記外部ライブラリを使用した変換では Unicode 0x2212 となります。
この相違を回避するには、XMLファイルのエンコードをUTF-8にするなど、読み込み前に対応が必要となります。
Question : 182
CachéのXML機能では、XQueryやXPathはサポートしていますか?
現時点では、XQueryはサポートしていません。
XPathに関しては、Cachéには、%XML.XPATHクラスライブラリーが含まれており、このライブラリーを使って、XPathを使った処理を行なうことができます。

