将xml存储在xml中

时间:2012-01-25 18:09:05

标签: xml delphi xml-serialization delphi-2009 omnixml

使用OmniXML包,是否可以将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是否支持这种情况的序列化?

欢迎任何其他简单的想法。

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:3)

如果不必立即读取数据中的内容,则可以将其编码为例如Base64或UUEncode。

然后您可以提取,解码和解析数据