Je travaille avec JDOM pour le moment. Je ne peux pas penser à une solution qui devrait essentiellement être un problème facile.Comment insérer XHTML dans XML
J'ai une chaîne valide XHTML:
<b>M&A</b> €
Comment puis-je insérer cela dans le DOM XML comme suit?
<parentNode>
<b>M&A</b>
€
</parentNode>
(ce XML va alors hors d'un transformateur XSL, ce qui rend alors XHTML pour le navigateur)
Je suis venu avec les solutions «pseudo» suivantes, mais je ne suis pas sûr si elles sont possibles:
Désactivez les entités qui ne sont pas des entités XML, puis insérez-les.
Reinscape ne contient que des entites XML, puis HTML désapparaît la chaîne entière, puis insère.
Taras
C'est ce que j'ai fini par faire : * entrée Parse XHTML fragment comme HTML dans un DOM en utilisant JTidy * extrait tous les nœuds enfants du corps en utilisant XPath (/ html/corps/node()) * Insérez extrait des noeuds dans XML cible DOM La seule mise en garde était que ' est une entité XHTML valide, mais pas un HTML valide.Cela signifiait que la première étape ne traiterait pas la séquence: ' comme une apostrophe, mais plutôt comme 6 caractères individuels. J'ai corrigé ceci en remplaçant toutes les instances de ' par la référence numérique (bit d'un hack, mais cela fonctionne) – Taras
Je suis sûr qu'il existe un moyen de dire à JTidy de remplacer toutes les références d'entités nommées par des références numérotées. Sur la ligne de commande, c'est "-n". Il y a aussi un switch pour le faire produire du XML valide. Je pense que la bibliothèque Java peut faire la même chose. – Tomalak
Désolé, l'espacement est un peu en désordre. J'ai trouvé la propriété -n dans JTidy, cependant, je ne pouvais pas trouver une option pour analyser XHTML au lieu de HTML - il analyse l'entrée en HTML, ce qui signifie qu'il ne reconnaît pas l'entité '. J'ai regardé la source pour voir si je pouvais ajouter une entité, mais pas de chance. En fait, j'ai trouvé le code source responsable de la définition des entités (EntityTable), et j'ai découvert que ' n'était pas défini (les autres 252 entités HTML étaient – Taras