Обертывание произвольного XML в XML

Согласно этой проблеме, она будет исправлена ​​в Terraform v 0.12 https://github.com/hashicorp/terraform/issues/10876

В качестве обходного пути можно использовать внешний источник данных для возврата тегов, что-то вроде этого Python Gist прервано разбором Terraform возвращенного объекта JSON: (

6
задан Marc C 22 April 2009 в 13:50
поделиться

6 ответов

You need to properly escape the text. You don't say what language you're using, but generally: you build a DOM, create a Text node that contains your "inner" XML, and then serialize that DOM. The serializer will handle escaping for you.

The key point here is use a serializer to produce your output. Don't simply write strings, because you're all but guaranteed to produce something that's not well-formed XML.

5
ответ дан 8 December 2019 в 17:27
поделиться

When you escape the ending angular bracket of the inner CDATA, most XML parsers will not complain about the well-formedness of your XML. Using this "workaround", you should be able to nest multiple CDATA sections.

Something like:

<?xml version="1.0"?>
<SomeData>
<![CDATA[
<SomeMoreData>
<![CDATA[
yeah, this trick rocks! ...
]]&gt;
</SomeMoreData>
]]>
</SomeData>

Note that the inner CDATA has its ending ">" escaped as >.

2
ответ дан 8 December 2019 в 17:27
поделиться

Попробуйте использовать XInclude вместо попытки встроить XML-документ в другой. Атрибут XInclude parse = "text" заставит XML обрабатываться как текст, а не как разметка.

1
ответ дан 8 December 2019 в 17:27
поделиться

Одно простое решение - у вас могут быть смежные секции CDATA. совпадает с . Следовательно, вы можете иметь ]]> , ]]> закрывающий тег, разделенный на два CDATA разделы.

1
ответ дан 8 December 2019 в 17:27
поделиться

Isn't that what character entities are for?

0
ответ дан 8 December 2019 в 17:27
поделиться

Вы можете сделать это, просто добавив документ (без его объявления <? Xml ) в качестве дочернего для какого-то родителя. SOAP делает это - у него есть элемент , который может содержать любое xml-сообщение, которое вы хотите отправить.

SOAP определяет XSD следующим образом:

<xs:element name="Body" type="tns:Body" />
  <xs:complexType name="Body">
    <xs:sequence>
      <xs:any namespace="##any" minOccurs="0" 
          maxOccurs="unbounded" processContents="lax" />
    </xs:sequence>
    <xs:anyAttribute namespace="##any" processContents="lax">
    </xs:anyAttribute>
  </xs:complexType>
5
ответ дан 8 December 2019 в 17:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: