在XML中包装任意XML

Mar*_*c C 6 xml xml-serialization

我需要在包装XML文档中嵌入任意(语法上有效)的XML文档.嵌入的文档应被视为纯文本,在解析包装文档时不需要是可解析的.

我知道" CDATA技巧 ",但如果内部XML文档本身包含CDATA段,我就不能使用它,我需要能够嵌入任何有效的XML文档.任何关于实现这一点的建议 - 或解决CDATA限制 - 将不胜感激.

kdg*_*ory 5

您需要正确转义文本。您没有说使用什么语言,但通常是:建立一个DOM,创建一个包含“内部” XML的Text节点,然后序列化该DOM。序列化程序将为您处理转义。

这里的关键是使用串行器产生输出。不要简单地编写字符串,因为几乎可以保证生成的不是格式正确的XML。


Boz*_*zho 5

你可以通过简单地添加文档(没有它的< ?xml声明)作为一个父亲的孩子来做到这一点.SOAP正在这样做 - 它有一个<Body>元素,可以包含任何想要发送的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>
Run Code Online (Sandbox Code Playgroud)