Bonjour,
je dois parser un XML pour faire une modification dedans.
Le document XML contient une clef DSA qui est à l'intérieur d'un des élements :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 ... <option key="Public Key" value="-----BEGIN DSA PRIVATE KEY----- MIIBuwIBAAKBgQCXv9AzQXjxvXWC1qu3CdEqskX9YomTfyG865gb4D02ZwWuRU/9 mbX5nxrld3wi5titTnX+8s4IKv29HJguPvOK/SI7cjzA+SqNfD7qEo8CFDIm1xRf 8xAPsSKs6yZ6j1FNklfu -----END DSA PRIVATE KEY----- " /> <option key="User" value="user" /> ...
Quand je le parse avec DOM, ça me met tout sur une seule ligne, en remplaçant les sauts de ligne par des espaces :
Le programme qui utilise ce fichier XML doit impérativement avoir la clef sous la forme standard (comme dans le premier extrait de code). Si elle n'a pas cette forme, elle est considérée corrompue.
Code : Sélectionner tout - Visualiser dans une fenêtre à part <option key="Public Key" value="-----BEGIN DSA PRIVATE KEY----- MIIBuwIBAAKBgQCXv9AzQXjxvXWC1qu3CdEqskX9YomTfyG865gb4D02ZwWuRU/9 . -----END DSA PRIVATE KEY-----" />
Je lis le fichier de cette manière :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setIgnoringComments(true); dbf.setValidating(false); dbf.setFeature("http://apache.org/xml/features/dom/include-ignorable-whitespace", true); dbf.setFeature("http://xml.org/sax/features/validation", false); dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false); dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(file);
et je l'écris de cette manière :
Est-ce que quelqu'un connaît le moyen de garder la clef "telle quelle" ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 // Prepare the DOM document for writing Source source = new DOMSource(doc); // Prepare the output file File file = new File(filename); Result result = new StreamResult(file); Transformer xformer = TransformerFactory.newInstance().newTransformer(); xformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); xformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM,""); xformer.transform(source, result);
Ou est-ce que quelqu'un a eu un problème similaire ?
Il semble que les options que je peux modifier n'affecte pas ce comportement...
Merci d'avance
dondamiano
Partager