IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Format d'échange (XML, JSON...) Java Discussion :

Créer un XML à partir d'un String [DOM]


Sujet :

Format d'échange (XML, JSON...) Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 35
    Par défaut Créer un XML à partir d'un String
    Bonjour,

    Au niveau de mon XMLRPC je reçoit un String contenant les données de ma base de donnée client sous cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <DB><clients><Struct><CLIENTNUM><Type>INT</Type><Size>11</Size></CLIENTNUM><CLIENTRUE><Type>VARCHAR</Type><Size>100</Size></CLIENTRUE><CLIENTVILLE><Type>VARCHAR</Type><Size>20</Size></CLIENTVILLE><CLIENTCODEPOSTAL><Type>VARCHAR</Type><Size>5</Size></CLIENTCODEPOSTAL><CLIENTPAYS><Type>VARCHAR</Type><Size>15</Size></CLIENTPAYS><CLIENTTELEPHONE><Type>VARCHAR</Type><Size>10</Size></CLIENTTELEPHONE><CLIENTMOBILE><Type>VARCHAR</Type><Size>10</Size></CLIENTMOBILE><CLIENTFAX><Type>VARCHAR</Type><Size>10</Size></CLIENTFAX><CLIENTMAIL><Type>VARCHAR</Type><Size>50</Size></CLIENTMAIL><CLIENTRIB><Type>VARCHAR</Type><Size>23</Size></CLIENTRIB><CLIENTCOM><Type>VARCHAR</Type><Size>200</Size></CLIENTCOM></Struct><data><Rows count="6"><Row><CLIENTNUM>1</CLIENTNUM><CLIENTRUE>95 rue de la tourniere</CLIENTRUE><CLIENTVILLE>choisy</CLIENTVILLE><CLIENTCODEPOSTAL>94070</CLIENTCODEPOSTAL><CLIENTPAYS>france</CLIENTPAYS><CLIENTTELEPHONE>146526525</CLIENTTELEPHONE><CLIENTMOBILE>665118748</CLIENTMOBILE><CLIENTFAX>652114487</CLIENTFAX><CLIENTMAIL>toto@hotmail.com</CLIENTMAIL><CLIENTRIB>25415265412542</CLIENTRIB><CLIENTCOM>k2</CLIENTCOM></Row><Row><CLIENTNUM>2</CLIENTNUM><CLIENTRUE>rue2</CLIENTRUE><CLIENTVILLE>choisy</CLIENTVILLE><CLIENTCODEPOSTAL>94051</CLIENTCODEPOSTAL><CLIENTPAYS>france</CLIENTPAYS><CLIENTTELEPHONE>146526525</CLIENTTELEPHONE><CLIENTMOBILE>665118748</CLIENTMOBILE><CLIENTFAX>652114487</CLIENTFAX><CLIENTMAIL>titi@gmail.com</CLIENTMAIL><CLIENTRIB>25415265412542</CLIENTRIB><CLIENTCOM>k2</CLIENTCOM></Row><Row>
    J'ai besoin de définir une méthode qui me permettra de convertir cette chaine de caractère en un XML afin de pouvoir le parser et faire les insertions et les updates nécéssaire dans ma base de données centrale.

    J'ai essayer cette méthode mais elle ne marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public Document ToXmlFile(String arg, String fileName) throws SAXException,
    			IOException, ParserConfigurationException {
     
    		File file = new File(fileName);
    		Document docXml = DocumentBuilderFactory.newInstance()
    				.newDocumentBuilder().parse(arg);
     
    		return docXml;
     
    	}
    Il m'affiche cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    java.io.FileNotFoundException: C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\DBXML\<DB><clients><Struct><CLIENTNUM><Type>INT<\Type><Size>....(Syntaxe du nom de fichier, de répertoire ou de volume incorrecte)
    	at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(Unknown Source)
    	at java.io.FileInputStream.<init>(Unknown Source)
    	at sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source)
    	at sun.net.www.protocol.file.FileURLConnection.getInputStream(Unknown Source)
    	at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
    	at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
    	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
    	at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
    	at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
    	at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
    	at Server.ToXmlFile(Server.java:18)
    	at Server.AddClients(Server.java:27)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at org.apache.xmlrpc.Invoker.execute(Invoker.java:130)
    	at org.apache.xmlrpc.XmlRpcWorker.invokeHandler(XmlRpcWorker.java:84)
    	at org.apache.xmlrpc.XmlRpcWorker.execute(XmlRpcWorker.java:146)
    	at org.apache.xmlrpc.XmlRpcServer.execute(XmlRpcServer.java:139)
    	at org.apache.xmlrpc.XmlRpcServer.execute(XmlRpcServer.java:125)
    	at org.apache.xmlrpc.WebServer$Connection.run(WebServer.java:761)
    	at org.apache.xmlrpc.WebServer$Runner.run(WebServer.java:642)
    	at java.lang.Thread.run(Unknown Source)
    Voilà voilou! Il semble que c'est le format du fichier qu'est incorrecte, je sais pas donc quelle forme lui passer? Ni une autre méthode à employer.

    Dans l'attente de vous lire ...

  2. #2
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    Avec ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public final static Document parse(String xml) throws ParserConfigurationException, SAXException, IOException {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        return builder.parse(new InputSource(new StringReader(xml)));
    }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 35
    Par défaut
    Comment faire pour visualiser mon fichier xml?


  4. #4
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Il faut utiliser un Transformer et sa méthode transform pour convertir l'objet Document en un truc que tu pourrais visualiser (fichier, log, etc...).

    Par exemple, pour rediriger le xml vers la sortie System.out :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
      TransformerFactory tFactory =
        TransformerFactory.newInstance();
      Transformer transformer = tFactory.newTransformer();
     
      DOMSource source = new DOMSource(document);
      StreamResult result = new StreamResult(System.out);
      transformer.transform(source, result);
    où document est l'objet Document que tu veux visualiser.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 35
    Par défaut
    Merci infiniment! ça marche

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 35
    Par défaut
    Bonjour,

    En modifiant ma requête et en voulant re généré mon fichier.xml, il m'affiche une erreur de convertion entre JDOM et DOM:

    org.apache.xmlrpc.XmlRpcException: java.lang.Exception: java.lang.ClassCastException: org.apache.xerces.dom.DeferredDocumentImpl cannot be cast to org.jdom.Document
    at org.apache.xmlrpc.XmlRpcClientResponseProcessor.decodeException(XmlRpcClientResponseProcessor.java:104)


    Ceci est mon code de convertion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public void enregistrer (Document doc,String name){
    		XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
    		try {
    			sortie.output((org.jdom.Document) doc, new FileOutputStream(name));
    		} catch (FileNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    Merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [c#] créer document xml à partir d'un schéma xsd
    Par Cédric B. dans le forum Services Web
    Réponses: 3
    Dernier message: 13/04/2011, 09h06
  2. créer un xml à partir d'une plage de cellules
    Par WillyPayne dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/09/2008, 13h52
  3. Créer doc XML à partir de JDBC
    Par grospatapouf dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 05/08/2008, 21h59
  4. Traitement XML à partir d'une String
    Par GLSpirit dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2008, 18h01
  5. [TINYXML] Créer un TiXmlDocument à partir d'une string
    Par lololeuleu dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 13/06/2007, 13h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo