FAQ - 技術的質問: XML

FAQのトップページに戻る


IDQuestion
077CachéのオブジェクトデータをXML形式で出力することはできますか?
078CachéのオブジェクトデータをXMLファイルから取り込むことはできますか?
108%XMLパッケージのクラスを使用して、外部XML文書を読み込んだり、外部XML文書を出力した際に、一部の文字が意図しない文字に化けます。
182CachéのXML機能では、XQueryやXPathはサポートしていますか?

それぞれの項目についてのお問い合わせは、各項目内のをクリックしてください。

 

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)

で出力されます。

具体的な例については、サンプルをご覧ください。

| Back to Top

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() }

具体的な例については、サンプルをご覧ください。

| Back to Top

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にするなど、読み込み前に対応が必要となります。

| Back to Top

Caché2007.1.x~Question : 182

CachéのXML機能では、XQueryやXPathはサポートしていますか?

現時点では、XQueryはサポートしていません。

XPathに関しては、Cachéには、%XML.XPATHクラスライブラリーが含まれており、このライブラリーを使って、XPathを使った処理を行なうことができます。

| Back to Top