хранить XML внутри XML - PullRequest
       17

хранить XML внутри XML

9 голосов
/ 25 января 2012

Используя пакет 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>

где внутри данных тега все должно быть данными. Существует ли escape-символ, который не позволяет парсеру анализировать следующие данные в структуре данных XML?

Или OmniXML поддерживает сериализацию для этой ситуации?

Любые другие простые идеи также приветствуются.

Ответы [ 2 ]

21 голосов
/ 25 января 2012

Вы можете использовать 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;
3 голосов
/ 26 января 2012

если содержимое данных не нужно считывать сразу, вы можете кодировать его, например, в Base64 или UUEncode.

Затем вы можете извлекать, декодировать и анализировать данные

...