10

使用 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 是否支持这种情况的序列化?

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

4

2 回答 2

22

您可以使用 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;
于 2012-01-25T18:12:58.707 回答
3

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

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

于 2012-01-25T20:17:09.593 回答