//////////////////////Exemple DE LA CLASSE EcritureXML/////////////////////////////////// ... import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Element; import org.w3c.dom.Document; import org.xml.sax.SAXException; import java.io.File; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; ... public class EcritureXML { private String nomFichier; private final static String repBase = new File("src").getAbsolutePath()+ "/donnees/"; final DocumentBuilder builder; final DocumentBuilderFactory factory; public EcritureXML(String nomFichier) throws ParserConfigurationException, SAXException, IOException { this.factory = DocumentBuilderFactory.newInstance(); this.builder = this.factory.newDocumentBuilder(); this.nomFichier = nomFichier; System.out.println(repBase); } /** * Ecrire dans les donnees un dossier medical en xml * @param dm le dossier medical a ecrire en xml * @throws TransformerConfigurationException x * @throws TransformerException x */ public void ecrireDossierXML(DossierMedical dm) throws TransformerConfigurationException, TransformerException { final Document document = builder.newDocument(); final Element racine = document.createElement("dossiers"); document.appendChild(racine); for(FicheDeSoins f : dm.getFiche()){ final Element fiche = document.createElement("ficheDeSoins"); racine.appendChild(fiche); final Element date = document.createElement("date"); date.appendChild(document.createTextNode(f.getDate().backToString() + "_" +f.getDate().backToStringHeureMin())); fiche.appendChild(date); final Element medecin = document.createElement("medecin"); final Element nomMed = document.createElement("nom"); final Element prenomMed = document.createElement("prenom"); final Element specialite = document.createElement("specialite"); final Element numTel = document.createElement("numTel"); nomMed.appendChild(document.createTextNode(f.getMedecin().getNom())); prenomMed.appendChild(document.createTextNode(f.getMedecin().getPrenom())); specialite.appendChild(document.createTextNode(f.getMedecin().getSpecialite())); ///////////////////////////////////// numTel.appendChild(document.createTextNode(f.getMedecin().getNumTel().replace(" ", ""))); medecin.appendChild(nomMed); medecin.appendChild(prenomMed); medecin.appendChild(specialite); medecin.appendChild(numTel); final Element patient = document.createElement("patient"); final Element nomPat = document.createElement("nom"); final Element prenomPat = document.createElement("prenom"); final Element adresse = document.createElement("adresse"); final Element numSS = document.createElement("numSS"); final Element dateNaissance = document.createElement("dateNaissance"); nomPat.appendChild(document.createTextNode(f.getPatient().getNom())); prenomPat.appendChild(document.createTextNode(f.getPatient().getPrenom())); adresse.appendChild(document.createTextNode(f.getPatient().getAdresse())); numSS.appendChild(document.createTextNode(f.getPatient().getNumeroSS())); dateNaissance.appendChild(document.createTextNode(f.getPatient().getDateDeNaissance().backToString())); patient.appendChild(nomPat); patient.appendChild(prenomPat); patient.appendChild(adresse); patient.appendChild(numSS); patient.appendChild(dateNaissance); fiche.appendChild(date); fiche.appendChild(medecin); fiche.appendChild(patient); for(Acte a : f.getActe()){ final Element acte = document.createElement("acte"); final Element code = document.createElement("code"); final Element coef = document.createElement("coef"); final Element dateHM = document.createElement("dateHM"); final Element type = document.createElement("type"); final Element observation = document.createElement("observation"); code.appendChild(document.createTextNode(a.getCode().backToString())); coef.appendChild(document.createTextNode(a.getCoefString())); dateHM.appendChild(document.createTextNode(a.getDate().backToString()+ "_" + a.getDate().backToStringHeureMin())); type.appendChild(document.createTextNode(a.getType().toString())); observation.appendChild(document.createTextNode(a.getObservation())); acte.appendChild(code); acte.appendChild(coef); acte.appendChild(dateHM); acte.appendChild(type); acte.appendChild(observation); fiche.appendChild(acte); } } //Affichage final TransformerFactory transformerFactory = TransformerFactory.newInstance(); final Transformer transformer = transformerFactory.newTransformer(); final StreamResult sortie = new StreamResult(new File(repBase + nomFichier)); final DOMSource source = new DOMSource(document); //prologue transformer.setOutputProperty(OutputKeys.VERSION, "1.0"); transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); transformer.setOutputProperty(OutputKeys.STANDALONE, "yes"); //Formatage transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); //Sortie transformer.transform(source, sortie); } ... } //////////////////////Exemple DE LA CLASSE de Test/////////////////////////////////// class Test { public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException, TransformerException { //////////////////////TEST DE LA CLASSE LectureXML/////////////////////////////////// ... LectureXML testDossier = new LectureXML("dossiers.xml"); ... DossierMedical dm = testDossier.getDossier(); ... //////////////////////TEST DE LA CLASSE ecritureXML/////////////////////////////////// ... EcritureXML testDossier = new EcritureXML("dossier.xml"); dm.ajouterFiche(dm.getFiche().get(dm.getFiche().size()-1)); testDossier.ecrireDossierXML(dm); ... } }