Java : Convertir format xml fichier à une ligne de chaîne
J'ai la forme d'un fichier XML, et je veux le convertir en une chaîne de ligne, comment puis-je le faire.
Xml exemple:
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book>
<title>Basic XML</title>
<price>100</price>
<qty>5</qty>
</book>
<book>
<title>Basic Java</title>
<price>200</price>
<qty>15</qty>
</book>
</books>
Sortie attendue
<?xml version="1.0" encoding="UTF-8"?><books><book> <title>Basic XML</title><price>100</price><qty>5</qty></book><book><title>Basic Java</title><price>200</price><qty>15</qty></book></books>
Merci d'avance.
Ce ne devrait pas être nécessaire. Pourquoi avez-vous besoin?
J'ai besoin de ça pour être passer à un cgi en entrée et que cgi accepte uniquement xml dans un formulaire en ligne.
merci beaucoup pour toutes les réponses
J'ai besoin de ça pour être passer à un cgi en entrée et que cgi accepte uniquement xml dans un formulaire en ligne.
merci beaucoup pour toutes les réponses
OriginalL'auteur Ianthe | 2011-04-01
Vous devez vous connecter pour publier un commentaire.
utiliser StringBuilder est plus efficace alors concat http://kaioa.com/node/59
Protal il sera désormais
Vous pouvez maintenant obtenir mon +1
Protal 10x
Merci pour la réponse
OriginalL'auteur
édité:
J'ai fait une petite erreur, il est préférable d'utiliser StringBuilder dans votre cas (je suppose que vous n'avez pas besoin de thread-safe StringBuffer)
les espaces doubles, regardez le résultat escompté, nous avons par exemple <livre> <title> - après le livre, c'est l'espace. Je ne pense pas que @sprenna voulez faire quelque chose avec des espaces.
Il ressemble à une erreur dans l'exemple, b/c l'autre <livre><title> combinaisons ont pas d'espace entre les deux
c'est une faute de frappe, il ne devrait pas y avoir d'espace entre les deux. désolé pour ça.
OriginalL'auteur
Exécuter par le biais d'une transformation XSLT l'identité de transformer avec
<xsl:output indent="no">
et<xsl:strip-space elements="*"/>
Il supprimera tous les non significative, de l'espace et de produire les résultats attendus que vous avez posté.
XSLT avec Java
OriginalL'auteur
Ouvrir et lire le fichier.
ce n'est pas vrai code, je n'ai toujours pas compris à formater correctement sur ce site, donc je suis allé pour la plupart de manière concise. L'idée tient toujours (si vous importez pertinentes de bibliothèques, de définir des variables comme
filename
, et configurer essayertry{} catch{}
blocs)Vous pouvez également faire
s.trim()
pour supprimer l'en-tête/les espaces sur chaque ligne...ne pas utiliser de chaîne concat ou stringbuffer comme smas suggère, utiliser StringBuilder kaioa.com/node/59
c0mrade, de droite mieux est StringBuilder, désolé
OriginalL'auteur
À l'aide de cette réponse, qui fournit le code à utiliser Dom4j à faire impression, modifiez la ligne qui définit le format de sortie:
createPrettyPrint()
:createCompactFormat()
OriginalL'auteur
Je suppose que tu veux lire, ignorer les espaces blancs, et de l'écrire à nouveau. La plupart des packages XML ont une option pour ignorer les espaces blancs. Par exemple, le DocumentBuilderFactory a setIgnoringElementContentWhitespace à cette fin.
De même, si vous êtes de la génération XML par ranger un objet puis JAXB a JAXB_FORMATTED_OUTPUT
OriginalL'auteur
Les solutions ci-dessus travail si vous êtes à la compression de tous les espaces blancs dans le document XML. Autre options sont JDOM (à l'aide de Format.getCompactFormat()) et dom4j (à l'aide de OutputFormat.createCompactFormat()) lors de la sortie du document XML.
Cependant, j'ai eu une unique obligation de préserver l'espace blanc contenues dans le texte de l'élément de valeur et ces solutions n'ont pas fonctionné comme je le voulais. Avais-je besoin pour retirer le "pretty-print" formatage ajouté au document XML.
La solution que j'ai trouvé peut être expliqué en 3 étapes/regex processus de ... pour l'amour de la compréhension de l'algorithme pour la solution.
REMARQUE: Le pseudo-code est en Java ... le "$1 " est la chaîne de remplacement, qui est le 1er groupe de capture.
Ce sera tout simplement supprimer l'espace blanc utilisé lors de l'ajout de la " pretty-print format d'un document XML, mais conserve tous les autres espaces lorsqu'elle est une partie de l'élément de texte valeur.
OriginalL'auteur
En java 1.8 et au-dessus de
OriginalL'auteur
Soulignent-java bibliothèque a méthode statique U. formatXml(xmlstring). Je suis le responsable du projet. Live exemple
OriginalL'auteur
lien
OriginalL'auteur