Emballage Arbitraire XML XML
J'ai besoin d'incorporer arbitraire (syntaxiquement valide) des documents XML à l'intérieur d'une enveloppe de document XML. Les documents incorporés, sont considérées comme du texte simple, ils n'ont pas besoin d'être parseable lors de l'analyse de l'emballage du document.
Je sais à propos de la "CDATA truc", mais je ne peux pas l'utiliser si l'intérieur document XML lui-même contient une CDATA segment, et j'ai besoin d'être en mesure de les intégrer tout document XML valide. Des conseils sur la réalisation de cette--ou de travail autour de la CDATA limitation--serait appréciée.
La lecture de votre commentaire à ma réponse, il me semble que nous parlons de deux choses différentes. Je parlais de l'encapsulation de texte XML dans un document XML: par exemple, en mettant un exemple de programme dans un affichage. Vous semblez parler simplement d'emballage XML bien formé avec plus de XML bien formé. Dans ce cas, le texte est la concaténation peut être votre meilleur pari (bien que les deux morceaux de texte devrait être produit par un sérialiseur).
Note qu'un tel habillage de ne pas s'impliquer CDATA ...
Le XML bien formé que j'ai besoin de retour à la ligne est elle-même un document XML bien formé, qui doit ensuite être incorporé à l'intérieur d'un document XML (et par la suite être extractible). Donc votre réponse, en plus de ma epiphanie, parfaitement résolu le problème.
Note qu'un tel habillage de ne pas s'impliquer CDATA ...
Le XML bien formé que j'ai besoin de retour à la ligne est elle-même un document XML bien formé, qui doit ensuite être incorporé à l'intérieur d'un document XML (et par la suite être extractible). Donc votre réponse, en plus de ma epiphanie, parfaitement résolu le problème.
OriginalL'auteur Marc C | 2009-04-22
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour échapper correctement le texte. Vous ne dites pas quelle est la langue que vous utilisez, mais en général: vous construisez des DOM, de créer un nœud de Texte qui contient votre "intérieur" XML, puis sérialiser que DOM. Le sérialiseur va gérer échapper pour vous.
Le point clé ici est utiliser un sérialiseur pour produire votre sortie. Ne pas tout simplement écrire des chaînes, parce que vous êtes tous, mais la garantie de produire quelque chose qui n'est pas XML bien formé.
OriginalL'auteur kdgregory
Vous pouvez le faire en ajoutant simplement le document (sans son <
?xml
déclaration) comme un enfant tom certains parents. Le SAVON est le faire - il a un<Body>
élément qui peut contenir tout ce message xml on veut envoyer.SOAP définit le XSD de cette façon:
OriginalL'auteur Bozho
Lorsque vous échapper à la fin angulaire du support de l'intérieur de la CDATA, la plupart des parseurs XML va pas se plaindre au sujet du bien-formation de votre XML. À l'aide de cette "solution de contournement", vous devriez être en mesure d'imbriquer plusieurs sections CDATA.
Quelque chose comme:
Remarque que l'intérieur CDATA a sa fin ">" échappé que
>
.OriginalL'auteur Cerebrus
Envisager d'utiliser XInclude au lieu d'essayer d'intégrer un document XML à l'intérieur de l'autre. Le XInclude parse="texte" attribut de la force du XML à être traités comme du texte, pas de balisage.
OriginalL'auteur Dour High Arch
Une solution, simple, est que vous pouvez avoir adjacentes des sections CDATA.
<![CDATA[A]]><![CDATA[B]]>
est le même que<![CDATA[AB]]>
. Par conséquent, vous pouvez avoir<![CDATA[]]]]><![CDATA[>]]>
, un]]>
balise de fermeture répartis sur deuxCDATA
sections.OriginalL'auteur MSalters
N'est-ce pas les entités de caractères sont pour?
OriginalL'auteur Calvin