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 :

[JXyDiff | XMLUnit] Comparaison de fichiers XML en BdD


Sujet :

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

  1. #1
    Membre éclairé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2003
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2003
    Messages : 921
    Par défaut [JXyDiff | XMLUnit] Comparaison de fichiers XML en BdD
    Bonjour à tous,

    Suite de ce post.

    Mon problème est que je ne sais pas si mon problème vient réellement de l'utilisation de FormFile ou de JXyDiff !

    struts-config.xml
    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
    30
    31
    32
    33
    34
    35
    36
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts-config PUBLIC
              "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
              "http://struts.apache.org/dtds/struts-config_1_3.dtd">
    <struts-config>
    	<form-beans>
    	[...]
    	    <form-bean name="formChoixFdm"
    	    		   type="org.apache.struts.validator.DynaValidatorForm">
    	    		   <form-property name="urlFdm" type="org.apache.struts.upload.FormFile"/>
    	    		   <form-property name="urlFdm2" type="org.apache.struts.upload.FormFile"/>
    	    </form-bean>
    	</form-beans>
    	<action-mappings>
    		[...]
    		<action
    			name="formChoixFdm"
    			path="/FormCompareFdm"
    			scope="request"
    			validate="true"
    			input="/compareFdm.do"
    			forward="com.mycompany.myproject.CompareFdmAction"
    		>
    			<!-- <forward name="succes" path="/vues/resComparaison.jsp"/> -->
    			<forward name="succes" path="/vues/compareFdm.jsp"/>
    			<forward name="echec" path="/vues/compareFdm.jsp"/>
    		</action>
    	</action-mappings>
    	<message-resources parameter="com.mycompany.myproject.padRessources"/>
    	<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
    		<set-property property="pathnames"
    					  value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"
    		/>
    		<set-property property="stopOnFirstError" value="false"/>
    	</plug-in>
    </struts-config>
    Form
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    package com.mycompany.myproject;
     
    import javax.servlet.http.HttpServletRequest;
     
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.upload.FormFile;
     
    public class CompareFdmForm extends ActionForm {
     
    	// URL du FDM n°1
    	private FormFile urlFdm = null;
     
    	// URL du FDM n°2
    	private FormFile urlFdm2 = null;
     
    	public FormFile getUrlFdm() {
    		return urlFdm;
    	}
     
    	public void setUrlFdm(FormFile urlFdm) {
    		this.urlFdm = urlFdm;
    	}
     
    	public FormFile getUrlFdm2() {
    		return urlFdm2;
    	}
     
    	public void setUrlFdm2(FormFile urlFdm2) {
    		this.urlFdm2 = urlFdm2;
    	}
     
    	/*
    	 * WARNING: In order to correctly recognize uploaded files, 
    	 * the ActionForm bean associated with this form 
    	 * must include a statement setting 
    	 * the corresponding org.apache.struts.upload.FormFile
    	 * property to null in the reset() method.
    	*/
     
    	public void reset(ActionMapping arg0, HttpServletRequest arg1) {
    		// TODO Auto-generated method stub
    		super.reset(arg0, arg1);
     
    		setUrlFdm(null);
    		setUrlFdm2(null);
    	}
     
    	// Validation
    	/*public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
     
    		// Gestion des erreurs
    		ActionErrors erreurs = new ActionErrors();
     
    		// Le chemin du 1er FDM doit être non vide
    		if (getUrlFdm() == null || getUrlFdm() == "") {
    			erreurs.add("urlFdmVide", new ActionMessage("error.urlFdm.vide"));
    		}
     
    		// Le chemin du 2ème FDM doit être non vide
    		if (getUrlFdm2() == null || getUrlFdm2() == "") {
    			erreurs.add("urlFdm2Vide", new ActionMessage("error.urlFdm2.vide"));
    		}
     
    		return erreurs;
    	}*/
    }
    Action
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    package com.mycompany.myproject;
     
    import java.io.IOException;
    import java.sql.SQLException;
     
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
     
    import fr.loria.ecoo.so6.xml.node.Document;
    import fr.loria.ecoo.so6.xml.xydiff.DeltaConstructor;
    import fr.loria.ecoo.so6.xml.xydiff.XyDiff;
     
     
    public class CompareFdmAction extends Action {
     
    	public ActionForward execute(ActionMapping mapping, 
    								 ActionForm form, 
    								 HttpServletRequest request, 
    								 HttpServletResponse response)
    			 					 throws IOException, ServletException, SQLException {
     
    		// Lieu de stockage des delta.xml
    		String cheminSauvegarde = "D:/delta.xml";
     
    		// Liaison avec le Form associé 
    		CompareFdmForm formChoixFdm = (CompareFdmForm)form;
     
    		XyDiff xydiff;
     
    		try {
    			xydiff = new XyDiff(formChoixFdm.getUrlFdm().toString(), formChoixFdm.getUrlFdm2().toString());
    			DeltaConstructor delta = xydiff.diff();
     
    			Document doc = delta.getDeltaDocument();
     
    			doc.save(cheminSauvegarde);
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
     
    		return mapping.findForward("succes");
    	}
    }

    JSP
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
    <%@ taglib uri="/WEB-INF/tld/struts-html.tld" prefix="html" %>
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    	<head>
    		<link rel="stylesheet" href="style/default.css" type="text/css" />
    		<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    		<title>BLABLA- Accueil</title>
    		<html:javascript formName="formChoixFdm" dynamicJavascript="true" staticJavascript="true" />
    	</head>
    	<body>
    		<div class="menuGaucheBarre"></div>
    		<div class="menuGauche">
    			<div class="logoMenu"></div>
    			<br />
    			<div class="ident">
    				<div class="titreListe">Identification</div>
    			</div>
    			<br />
    			<div class="listeContenu">
    				<div class="titreListe">Navigator</div>
    				<ul class="menu">
    					<li class="menu">&nbsp;<a href="index.jsp">Accueil</a></li>
    					<li class="menu">&nbsp;<a href="choixMachine.do">Afficher une machine</a></li>
    					<li class="menu">&nbsp;<a href="compareFdm.do">Comparer 2 FDM</a></li>
    				</ul>
    			</div>
    		</div>
    		<div class="conteneur">
    			<h1>Interface de consultation blabla</h1>
    			<hr />
    			<html:form action="/FormCompareFdm" method="POST" enctype="multipart/form-data" focus="urlFdm" onsubmit="return validateFormChoixFdm(this);">
    				<table>
    					<tr>
    						<th colspan="2">Comparer deux FDMs</th>
    					</tr>
    					<tr>
    						<td class="ss-titre">FDM n°1 :</td>
    						<td class="txt"><html:file property="urlFdm" size="50" /><html:errors property="urlFdm" /></td>
    					</tr>
    					<tr>
    						<td class="ss-titre">FDM n°2 :</td>
    						<td class="txt"><html:file property="urlFdm2" size="50" /><html:errors property="urlFdm2" /></td>
    					</tr>
    					<tr>
    						<td colspan="2" align="right"><html:submit styleClass="bouton" value="Comparer" /></td>
    					</tr>
    				</table>
    			</html:form>
    			<br />
    		</div>
    	</body>
    </html>
    Erreur :
    Etat HTTP 500 -

    --------------------------------------------------------------------------------

    type Rapport d'exception

    message

    description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.

    exception

    javax.servlet.ServletException: Le chemin com.mycompany.myproject.CompareFdmAction ne commence pas par le caractère "/"
    org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


    cause mère

    java.lang.IllegalArgumentException: Le chemin com.mycompany.myproject.CompareFdmAction ne commence pas par le caractère "/"
    org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:107)
    org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:96)
    org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54)
    org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


    note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/5.5.23.


    --------------------------------------------------------------------------------

    Apache Tomcat/5.5.23

  2. #2
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    Bonjour,

    es-tu sur de forward="com.mycompany.myproject.CompareFdmAction" c'est pas plutôt type="com.mycompany.myproject.CompareFdmAction" dans l'action du strut-config.xml

  3. #3
    Membre éclairé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2003
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2003
    Messages : 921
    Par défaut
    Citation Envoyé par fnobb
    Bonjour,

    es-tu sur de forward="com.mycompany.myproject.CompareFdmAction" c'est pas plutôt type="com.mycompany.myproject.CompareFdmAction" dans l'action du strut-config.xml
    Exacte ! Tu as l'oeil dit donc !

    Je dis ça parce qu'au moment où tu écrivais ces quelques lignes, je m'étais moi-même rendu compte de mon erreur !


    Mais désormais, j'ai une nouvelle erreur !

    Apparemment, mon problème vient du fait que je n'arrive pas à récupérer le chemin du fichier, mais seulement le nom du fichier !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xydiff = new XyDiff(formChoixFdm.getUrlFdm().toString(), formChoixFdm.getUrlFdm2().toString());
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xydiff = new XyDiff(formChoixFdm.getUrlFdm().getFileName(), formChoixFdm.getUrlFdm2().getFileName());
    dans les 2 cas me renvoie : nom_fic.xml et non C:\mon_rep\nom_fic.xml !

  4. #4
    Membre éclairé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2003
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2003
    Messages : 921
    Par défaut
    Je viens de trouver ce post et rassurez moi ... je suis tout de même pas obligé de faire tout ça, simplement pour réaliser une comparaison XML ?!

  5. #5
    Membre éclairé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2003
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2003
    Messages : 921
    Par défaut
    J'essaye de réaliser ma comparaison de fichiers XML à partir d'un autre outil (XMLUnit), mais il y a une ligne de code dans l'exemple que je ne comprends pas ... et que mon EDI ne comprend pas non plus !?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class MyXMLTestCase extends XMLTestCase {
        public MyXMLTestCase(String name) {
            super(name);
        }
    
        public void testForEquality() throws Exception {
            String myControlXML = "<msg><uuid>0x00435A8C</uuid></msg>";
            String myTestXML = "<msg><localId>2376</localId></msg>";
            assertXMLEqual("Comparing test xml to control xml",
                           myControlXML, myTestXML);
        }
    }

    Gôm

  6. #6
    Membre éclairé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2003
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2003
    Messages : 921
    Par défaut
    Apparemment ce serait une ligne de commande JUnit, mais ça ne me dit malheureusement pas comment la traduire en JAVA "standard" !?


    Merci de me donner à un ptit coup de main !

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Par défaut
    Pourtant cette méthode existe bien dans la classe mere : http://xmlunit.svn.sourceforge.net/v...va?view=markup

  8. #8
    Membre éclairé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2003
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2003
    Messages : 921
    Par défaut
    Citation Envoyé par Morbo
    Pourtant cette méthode existe bien dans la classe mere : http://xmlunit.svn.sourceforge.net/v...va?view=markup
    Parce qu'il utilise JUnit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [...]
    import junit.framework.TestCase;
    [...]
    Ce qui n'est pas mon cas !


    Comment puis-je m'en passer ?

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Par défaut
    Ben tu peux pas à la fois vouloir te servir d'une classe qui extend de JUnit et ne pas inclure la lib.

  10. #10
    Membre éclairé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2003
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2003
    Messages : 921
    Par défaut
    Citation Envoyé par Morbo
    Ben tu peux pas à la fois vouloir te servir d'une classe qui extend de JUnit et ne pas inclure la lib.
    Une procédure particulière pour inclure la lib ?

  11. #11
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Par défaut
    Rien de particulier, c'est une lib java, tu récupères le jar http://sourceforge.net/project/showf...group_id=15278 et tu l'inclus dans le classpath à la compile et à l'exécution du programme.

Discussions similaires

  1. Utiliser des fichiers XML comme "bdd"
    Par Shirraz dans le forum XQUERY/SGBD
    Réponses: 6
    Dernier message: 28/04/2009, 17h37
  2. mapping fichier XML et bdd oracle
    Par moneyinthebank dans le forum C#
    Réponses: 3
    Dernier message: 09/08/2007, 16h46
  3. [Forms] mapping fichier XML et bdd oracle
    Par moneyinthebank dans le forum Forms
    Réponses: 0
    Dernier message: 08/08/2007, 17h12
  4. [BdD] Gros fichier XML (500mo) => BDD : Quelle technique ?
    Par Masterlud dans le forum XQUERY/SGBD
    Réponses: 10
    Dernier message: 02/05/2007, 13h31
  5. transoformation de fichier xml en bdd
    Par atb dans le forum Bases de données
    Réponses: 2
    Dernier message: 05/05/2005, 11h08

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