Forcer MSXML pour le format de sortie XML avec des tirets et des retours à la ligne
Je suis l'aide de MSXML 3.0 avec Visual Basic 6 pour stocker et récupérer la configuration de mon application. Lors de l'enregistrement de l'résultant DOMDocument
à un fichier XML de l'objet racine est rendu qu'une seule très longue ligne de texte:
<?xml version="1.0"?>
<!--WORKAPP 2011 Configuration file-->
<profile version="1.0"><frmPlan><left>300</left><top>300</top><width>24600</width><height>13575</height></frmPlan><preferences><text1/><text2/><text3/><background_color/><grid-major-step-x>50</grid-major-step-x><grid-major-step-y>50</grid-major-step-y></preferences></profile>
Est-il possible de forcer MSXML pour formater le fichier XML résultant en tirets et des retours à la ligne?
OriginalL'auteur ezpresso | 2011-06-19
Vous devez vous connecter pour publier un commentaire.
De minuscules fichiers de config de la surcharge de l'aide de XSL n'est probablement pas important de toute façon. La puissance de SAX est plus important lorsque vous faites affaire avec de gros fichiers ou des tonnes de petits tels que le côté serveur d'un Service Web - et là, vous ne devriez probablement pas être en utilisant le poids lourd DOM en premier lieu.
OriginalL'auteur Bob77
Probablement cette réponse ne va pas aider dans votre cas particulier, mais en général, il peut être utile. Cela concerne les cas où le document est chargé et enregistré sans trop de modification.
DomDocument
apreserveWhitespace
de la propriété, qui est initialement fixé àFalse
. Si vous le réglez àTrue
avantload
, alors il sera enregistré à l'aide de la même indentation que le fichier d'origine.Pour ajouter l'indentation manuellement on peut créer des nœuds de texte et de les insérer à créer de nouvelles lignes et les espaces entre les éléments, comme ceci:
OriginalL'auteur Jarekczek
Vous pouvez prendre un coup d'oeil à cette autre question sur DONC et le code C++ de réponses. Mais c'est trop de travail. Vous voulez dire que vous êtes tout simplement de stocker un fichier de config. Donc, utiliser une transformation XSLT:
N'oubliez pas de sortie pour un ADODB.Flux, non pas d'un DOM. Si vous la sortie d'un DOM, XSLT sérialiseur sera ignoré.
Vous placez le code dans un fichier XSLT (comme
pretty.xsl
), puis exécutez une transformation, ce qui peut être fait à l'aide de la Microsoftmsxsl.exe
utilitaire de ligne de commande ou tout autre processeur XSLT. Vous pouvez aussi utiliser le MSXML API pour faire la transformation.Merci; cependant, le résultat n'est pas sortir comme prévu et j'ai a commencé une nouvelle question
OriginalL'auteur Lumi
Voici une brève indentation fonction utilitaire qui travaille sur les objets DOM et les chaînes de caractères en entrée et retourne une chaîne formatée. Gestion des fichiers (utf-8) est laissé en dehors de son champ d'application. Ne pas utiliser ADODB ruisseaux et n'a pas besoin de MSXML dans les références du projet.
Peut être utilisé comme cela
... donc, si quelque chose échoue (XML non valide, etc.)
sXml
détient toujours d'origine non formaté entrée.OriginalL'auteur wqw