2012-01-25 21 views
9

OmniXMLパッケージを使用すると、独自のXMLデータを持つ別のXMLファイルにXMLコードを格納できますか?タグデータの内部で、すべてがデータでなければなりませんxmlをxmlに格納

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<root> 
<data> 
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
     <otherxml>data</otherxml> 
</data> 

:このように

。パーサが次のデータをXMLデータ構造に解析できないエスケープ文字がありますか?

またはOmniXMLはこの状況でのシリアル化をサポートしていますか?

他の簡単なアイデアも歓迎します。

+0

これを試しましたか?それができるかどうか尋ねるだけですか? – RBA

+0

これを試したところ、構文解析エラー – none

答えて

21

あなたはCDATAを使用することができます。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<root> 
<data> 
    <![CDATA[ 
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
     <otherxml>data</otherxml> 
    ]]> 
</data> 

注意をあなたがdataの値を取得するときに、新しいXMLパーサを介して実行する必要があると思いますので、それは文字列のようになります。ここで

はomniXMLのためのサンプルコードです:

var 
    xml:IXMLDocument; 
    Node:IXMLNode; 
begin 
    xml := CreateXMLDoc;  
    xml.SelectSingleNode('/root/data',Node); 
    ShowMessage(GetNodeCData(Node,'data','')); 
end; 
+6

+1、CDATA_;を使用する必要があります) – TLama

+0

xmlファイルを作成するためには、実行する必要はありません。 – none

+1

エンコードに問題がある可能性があることに注意してください。たとえば、埋め込みXMLが<?xml encoding = "UTF-16"?>を使用し、外側xmlがUTF-8を使用する場合、XMLパーサーは内部XMLをUTF-8として処理する必要があります。 – mjn

3

データの内容はrigth離れて読み取ることが必要がない場合は、例のBase64またはUUENCODEのためにそれをエンコードすることができます。

次に、データを抽出、デコード、解析することができます。

+3

これは、コード化されたテキストを 'CDATA'セクションに保存する必要があるので、これを行うのは難しい(そして遅い)方法です。 –

+3

埋め込みXMLにCDATAが含まれている場合は、エンコードする必要があると思います。私はこれが理由のために好ましい方法だと言います。 –

+0

@DarianMillerがその場所にあるようです。 –

関連する問題