Je veux écrire du texte contenant des caractères blancheurs tels que Newline code> et
onglet code> dans un fichier XML, donc j'utilise
Node vs = xmldoc.getElementsByTagName("TestElement").item(0);
String x = vs.getFirstChild().getNodeValue();
5 Réponses :
Edit: Coupez toutes les choses non pertinentes p>
Je suis curieux de savoir quelle implémentation de DOM que vous utilisez, car elle ne reflète pas le comportement par défaut de celui dans un couple de JVM que j'ai essayé (ils expédient avec un Xerces impliquant). Je suis également intéressé par les caractères de votre document Newline. P>
Je ne suis pas sûr que si CDATA préserver le blanc est une personne donnée. Je soupçonne que de nombreux facteurs sont impliqués. Les DTDS / Schemas ne concernent pas comment WhitSpace est traité? P>
Vous pouvez essayer d'utiliser l'attribut XML: espace = "conserve". P>
Merci, où devrais-je ajouter ce XML: Space = "Conserver" Attribut? au nœud contenant le texte ou à la racine XML?
Vous devez vérifier le type de chaque nœud à l'aide de Node.getNodeType (). Si le type est cdata_section_node, vous devez concéder les gardes CDATA à Node.getNodeValue. P>
Oui, le type du nœud est CDATA. Mais qu'est-ce que tu veux dire avec des gardes CDATA concates?
Vous n'avez pas nécessairement d'utiliser CDATA pour préserver les caractères d'espace blanc. Le xml Spécification Spécifiez comment encoder ces caractères. Ainsi, par exemple, si vous avez un élément de valeur contenant un nouvel espace, vous devez le coder avec P>

Merci, mais y a-t-il un moyen sans le coder? afin que je puisse voir le texte formaté dans le fichier XML lui-même?
Je ne sais pas comment vous analysez et écrivez votre document, mais voici un exemple de code amélioré basé sur la vôtre:
--- XML --- <?xml version="1.0" encoding="UTF-16"?> <TestElement><![CDATA[first line second line ]]></TestElement> --- Node Text --- first line second line
Merci, j'ai essayé ça, mais ça ne marche pas pour moi. Bien que je puisse voir les chevreakes sont là dans le disque XMLFILE sur disque, une fois que je les ai lu avec ce code, ils sont partis. Peut-être que mon personnage de la bande de ligne est mauvais. Comment puis-je découvrir, lequel c'est?
La sortie que j'ai montrée est une véritable sortie de ma propre machine de l'exemple de code que j'ai posté. Avez-vous essayé d'écrire le texte avec le code que j'ai suggéré? Ou seulement pour le lire en utilisant mon code? En outre, quel est le codage de votre fichier (vous pouvez voir que dans mon exemple, le codage est UTF-16). J'ai eu un problème similaire en n'utilisant pas le même codage et je l'ai corrigé à l'aide de Charset.forname () avec le codage réel utilisé.
Oui, j'ai essayé votre code actuel dans mon cas. J'ai utilisé exactement le même code pour sortir la chaîne. Mais cela ne contient pas de gros espaces. L'encodage que j'utilise est codant = "ISO-8859-1" Je vais essayer d'utiliser UTF-16
Si vous utilisez exactement le même code avec ISO-8859-1, vous aurez des problèmes - à moins que vous ne changiez de caractères.frorname pour utiliser ISO-8859-1. Les nouvelles lignes peuvent être problématiques entre ASCII et UTF-16, de sorte que cela vaut une photo.
J'ai essayé avec "utf-16" alors que désexaminer, mais dans mon cas. C'est convertir "\ n \ n" avec "\ n \ n" qui cause pour moi. Pouvez-vous s'il vous plaît fournir une solution à ce problème.
xml: espace = 'conserver' n'est pas ça. C'est seulement pour les nœuds "tous les espaces". C'est-à-dire que si vous voulez les nœuds blancheurs dans mais voyez que ces nœuds blancheurs ne sont que des espaces. P> J'ai du mal à obtenir des XERCES pour générer des événements permettant ainsi une isolation de la teneur en CDATA. Je n'ai pas encore de solution aussi. P> p>
Pourriez-vous poster un exemple de code plus complet?
C'est un élément. Je posterai plus de code bientôt.
Lorsque vous obtenez la valeur de 'x', il est équivalent à «suls» moins les nouvelles lignes?
Avez-vous essayé d'échapper à la barre oblique inverse sur votre
\ n code> pour le faire
\\ n code>?
Eh bien, lorsque je regarde directement dans le disque XML sur disque, les nouvelles lignes semblent préservées. Donc, le problème se produit lors de la lecture dans le XML. désolé je n'ai pas dit cela plus tôt. Je vais l'ajouter à mon post.
Quel personnage de nouvelle ligne est utilisé? Un tir dans le noir, mais je me demande s'il a quelque chose à voir avec la manière dont les nouvelles lignes sont prises en charge: w3.org/tr/rec-xml/#sec-line-end
@Mcdowll, comment puis-je savoir ce que le personnage de la nouvelle ligne est utilisé? J'ai le xmlfile sur disque, où la nouvelle ligne a l'air bien.