Modifier un fichier XML en Java

Résolu/Fermé
kanadianDri3 Messages postés 85 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 12 juillet 2010 - 11 mars 2010 à 15:34
kanadianDri3 Messages postés 85 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 12 juillet 2010 - 11 mars 2010 à 20:11
Bonjour,

Je cherche à modifier un fichier XML en Java. Savez vous comment faire, car je bloque !

Je me doute que c'est un peu lourd. En gros, là où sa bloque c'est quand je veux remplacer l'information. J'imagine que c'est en utilisant mon Transformer (variable trans). Tout le reste marche trés bien.

Dans la ligne : Result destination = new StreamResult () ;
Si je remplace en mettant : Result destination = new StreamResult (System.out ) ; Ca m'affiche correctement le text mais dans la console. Comment faire pour récupérer ce stream pour l'utiliser et remplacer ce qui se trouve dans mon fichier XML ?


Voila ma fonction:

public void deleteUserRegister(String userDeleted){
try {
DocumentBuilderFactory documentBuildFactory = DocumentBuilderFactory.newInstance();

DocumentBuilder documentBuilder = documentBuildFactory.newDocumentBuilder();

Document XMLDoc = documentBuilder.parse( new File( "C:\\Users\\Dave\\Documents\\NetBeansProjects\\Server\\src\\server\\XMLUser.xml" ) ) ;

XMLDoc.getDocumentElement().normalize() ;


TransformerFactory transFact = TransformerFactory.newInstance() ;

Transformer trans = transFact.newTransformer() ;


NodeList userList = XMLDoc.getElementsByTagName( "user" ) ;

for (int i = 0; i < userList.getLength(); i++) {

Node myUserNode = userList.item( i ) ;

Element userElement = ( Elemen t) myUserNode ;

NodeList userNodeElementPseudo = userElement.getElementsByTagName( "pseudo" ) ;

Element pseudoElement = ( Element ) userNodeElementPseudo.item( 0 ) ;

NodeList pseudoNodeElement = pseudoElement.getChildNodes() ;

if ( ( ( Node ) pseudoNodeElement.item(0) ).getNodeValue().equals( userDeleted ) ) {

userElement.getParentNode().removeChild( userElement ) ;

XMLDoc.normalize() ;

Source source = new DOMSource( XMLDoc ) ;

Result destination = new StreamResult() ;

transf.transform( source , destination ) ;

}

}

}

catch (TransformerException ex) { }

catch (SAXException ex) { }

catch (IOException ex) { }

catch (ParserConfigurationException ex) { }

}

Et le fichier XML:

<?xml version="1.0" encoding="UTF-8"?>

<!--
Document : XMLUser.xml
Created on : 6 mars 2010, 20:31
Author : Dave
Description:
Purpose of the document follows.
-->

<Users>
<user id="1">
<pseudo>dave</pseudo>
<password>password</password>
<function>admin</function>
</user>
<user id="2">
<pseudo>user1</pseudo>
<password>mdp</password>
<function>user</function>
</user>
<user id="3">
<pseudo>user2</pseudo>
<password>mdp</password>
<function>user</function>
</user>
</Users>

Merci beaucoup pour votre aide !
A voir également:

2 réponses

kanadianDri3 Messages postés 85 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 12 juillet 2010 10
11 mars 2010 à 20:11
solution :

Result destination = new StreamResult( new File( "C:\\Users\\Dave\\Documents\\NetBeansProjects\\Server\\src\\server\\XMLUser.xml" ) ) ;
1
kanadianDri3 Messages postés 85 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 12 juillet 2010 10
11 mars 2010 à 17:31
Toujours pas d'idée ?
0