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 :

Remplacer un element dans un fichier xml [JDOM]


Sujet :

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

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Points : 43
    Points
    43
    Par défaut Remplacer un element dans un fichier xml
    Bonjour,

    Je veux modifier la valeur d'un attribut d'un élément (partnerLink) dans un fichier XML. la modification se passe bien mais le problème c'est que l'ordre des attributs change ainsi que les éléments se trouvant avant l'élément redondant a la contrainte l'attribut en question est supprimée. Voici le code:
    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
     
     
    import java.io.*;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
     
    import javax.xml.parsers.*;
    import javax.xml.transform.Result;
    import javax.xml.transform.Source;
    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;
     
    import org.w3c.dom.*;
     
    public class UpdateBPEL {
     
    	static Document document;
    	static org.jdom.Element racine;
     
    	 static void lireFichier(String fichier) throws Exception
    	   {
    	     File file = new File(fichier);
    		  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    		  DocumentBuilder db = dbf.newDocumentBuilder();
    		  document = db.parse(file);
    	   //   System.out.println("Root element : " +document.getDocumentElement().getNodeName());
    	   }
     
    	 static void updateElement(String element,String element1)
    	 {
    		 String ch1,ch2,ch3 ="";  
    		 ch1="http://"+ element;
    	     ch2="http://"+ element1;
    	     long l;
     
     
     
    	             NodeList nodeLst = document.getElementsByTagName("partnerLink"); 	          
     
     
    	            for (int s = 0; s < nodeLst.getLength(); s++) { //import
     
    					    Node fstNode = nodeLst.item(s);
     
    				    if (fstNode.getNodeType() == Node.ELEMENT_NODE) {
     
    				     Element fstElmnt = (Element) fstNode;
     
    				     //System.out.println(" element : " +fstElmnt.getAttributes().getLength());
     
    				     l = fstElmnt.getAttributes().getLength();
    					   //  System.out.println("lol "+l);
    					     for (int h = 0; h <l; h++) { //import
     
    							 Node  fNode= fstElmnt.getAttributes().item(h);
     
     
    						    if (fNode.getNodeType() == Node.ATTRIBUTE_NODE) {
     
    							      Attr fElmnt = (Attr) fNode;
    							      ch3 = fElmnt.getValue();							      
     
    						      if (ch3.equals(ch1)){
    						        	// System.out.println("Result est "+ch3+"fElmnt.getName()=>"+fElmnt.getName()+"ch2 "+ch2);						        	 
    						        	 fstElmnt.setAttribute(fElmnt.getName(), ch2);
     
    						         }
     
    						   }
    						   }
     
    						  }
    	            }
     
    	  }		 
     
     
    	 public static void writeXmlFile(Document doc, String filename) {
    	       try {
    	           // 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);
     
    	           // Write the DOM document to the file
    	           Transformer xformer = TransformerFactory.newInstance().newTransformer();
    	           xformer.transform(source, result);
    	       } catch (TransformerConfigurationException e) {
    	       } catch (TransformerException e) {
    	       }
    	   }
     
    	public static void main(String[] args) {
     
     
    		  try
    	       {
    	          lireFichier("E:\\Workspace\\FunctionProcesstest.bpel");
     
     
    	          updateElement("AdderService.wsdl","AdderService1.wsdl");
     
    	          writeXmlFile(document,"E:\\Workspace\\FunctionProcesstest2.bpel");
    	        }
    	       catch (Exception e) {
    			    e.printStackTrace();
    			  }
     
    	}
     
    }
    Le fichier de référence voir pièces jointes.

    Je ne sais ce problème est du a quoi exactement. Merci d'avance pour votre aide

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 557
    Points : 21 616
    Points
    21 616
    Par défaut
    Pour information, tu utilises DOM, pas JDOM, là.

    En XML les attributs n'ont pas d'ordre, donc c'est normal que ça soit chamboulé.
    Je n'ai pas compris ce qui change avec les éléments, l'histoire d'avant, de contrainte, ces trucs-là, pas clair. En tout cas ton code ne semble changer que des attributs pour des éléments <partnerLink>.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Points : 43
    Points
    43
    Par défaut
    Bonjour,

    Merci Thelvin pour ta réponse, alors l'idée c'est que dans mon fichier source j'ai 4 élements child "partnerLink" de l'élément "partnerLinks" ayant les mêmes attributs, si je veux changer la valeur d'un attribut de l'élément 3 dans mon cas répondant a la contrainte qui est la valeur de l'attribut égale "AdderService.wsdl". j'ai réussi a remplacer pour cet élément la valeur de cette attribut mais le problème c'est que les élément 1 et 2 cette même attribut est supprimée automatiquement , donc je veux savoir pourquoi l'attribut est supprimée des autres éléments ne vérifiant pas la contrainte déjà citée.

    voici le fichier source FunctionProcesstest:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="UTF-8" standalone="no"?><process xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:ns0="http://AdderService1.wsdl" xmlns:ns1="http://MultiplierService.wsdl" xmlns:ns2="http://SquareService.wsdl" xmlns:ns3="http://www.example.org/messages" xmlns:ns4="http://ws.apache.org/axis2" xmlns:sxed="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/Editor" xmlns:sxt="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/Trace" xmlns:tns="http://FunctionProcess.bpel" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="FunctionProcess" targetNamespace="http://FunctionProcess.bpel">
        <import importType="http://schemas.xmlsoap.org/wsdl/" location="FunctionProcessService.wsdl" namespace="http://FunctionProcessService.wsdl"/>
        <import importType="http://schemas.xmlsoap.org/wsdl/" location="AdderService1.wsdl" namespace="http://AdderService1.wsdl"/>
        <import importType="http://schemas.xmlsoap.org/wsdl/" location="MultiplierService.wsdl" namespace="http://MultiplierService.wsdl"/>
        <import importType="http://schemas.xmlsoap.org/wsdl/" location="SquareService.wsdl" namespace="http://SquareService.wsdl"/>
        <partnerLinks>
            <partnerLink name="SquarePartnerLink" partnerLinkType="ns2:SquareServicePartnerlinkType" partnerRole="squareRole"/>
            <partnerLink name="MultiplierPartnerLink" partnerLinkType="ns1:MultiplierServicePartnerlinkType" partnerRole="multiplierRole"/>
            <partnerLink name="AdderPartnerLink" partnerLinkType="ns0:AdderServicePartnerlinkType" partnerRole="adderRole"/>
            <partnerLink xmlns:tns="http://FunctionProcessService.wsdl" myRole="FunctionProcessServicePortTypeRole" name="FunctionProcessPartnerLink" partnerLinkType="tns:FunctionProcessService"/>
        </partnerLinks>
    Merci

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Points : 43
    Points
    43
    Par défaut
    Re,

    Si j'utilise un fichier xml source volumineux le problème de la suppression de l'attribut pour les autres éléments persiste pour un fichier source contenant que les partnerlink mon programme marche:

    Voici un nouveau fichier source:

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <process
        name="FunctionProcess"
        targetNamespace="http://FunctionProcess.bpel"
        xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xmlns:sxt="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/Trace" 
        xmlns:sxed="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/Editor"
        xmlns:tns="http://FunctionProcess.bpel" xmlns:ns0="http://AdderService.wsdl" xmlns:ns1="http://MultiplierService.wsdl" xmlns:ns2="http://SquareService.wsdl" xmlns:ns3="http://www.example.org/messages" xmlns:ns4="http://ws.apache.org/axis2" xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable">
        <import namespace="http://FunctionProcessService.wsdl" location="FunctionProcessService.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
        <import namespace="http://AdderService.wsdl" location="AdderService.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
        <import namespace="http://MultiplierService.wsdl" location="MultiplierService.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
        <import namespace="http://SquareService.wsdl" location="SquareService.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
        <partnerLinks>
            <partnerLink name="SquarePartnerLink" xmlns:ns2="http://SquareService.wsdl" partnerLinkType="ns2:SquareServicePartnerlinkType" partnerRole="squareRole"/>
            <partnerLink name="MultiplierPartnerLink" xmlns:ns1="http://MultiplierService.wsdl" partnerLinkType="ns1:MultiplierServicePartnerlinkType" partnerRole="multiplierRole"/>
            <partnerLink name="AdderPartnerLink" xmlns:ns0="http://AdderService.wsdl" partnerLinkType="ns0:AdderServicePartnerlinkType" partnerRole="adderRole"/>
            <partnerLink name="FunctionProcessPartnerLink" xmlns:tns="http://FunctionProcessService.wsdl" partnerLinkType="tns:FunctionProcessService" myRole="FunctionProcessServicePortTypeRole"/>
        </partnerLinks>
        <variables>
            <variable name="FunctionProcessServiceOperationOutput" xmlns:tns="http://FunctionProcessService.wsdl" messageType="tns:FunctionProcessServiceOperationResponse"/>
            <variable name="MultiplyOutput1" messageType="ns1:multiplyResponse"/>
            <variable name="MultiplyInput1" messageType="ns1:multiplyRequest"/>
            <variable name="FunctionProcessServiceOperationInput" xmlns:tns="http://FunctionProcessService.wsdl" messageType="tns:FunctionProcessServiceOperationRequest"/>
            <variable name="MultiplyOutput" xmlns:ns1="http://MultiplierService.wsdl" messageType="ns1:multiplyResponse"/>
            <variable name="MultiplyInput" xmlns:ns1="http://MultiplierService.wsdl" messageType="ns1:multiplyRequest"/>
            <variable name="SquareOutput" xmlns:ns2="http://SquareService.wsdl" messageType="ns2:squareResponse"/>
            <variable name="SquareInput" xmlns:ns2="http://SquareService.wsdl" messageType="ns2:squareRequest"/>
            <variable name="AddOutput" xmlns:ns0="http://AdderService.wsdl" messageType="ns0:addResponse"/>
            <variable name="AddInput" xmlns:ns0="http://AdderService.wsdl" messageType="ns0:addRequest"/>
        </variables>
     
    </process>
    Merci

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 557
    Points : 21 616
    Points
    21 616
    Par défaut
    C'est sûr que ça nous simplifierait la vie si :
    - tu ne confondais pas élément et attribut, et de manière générale si tu exprimais clairement ce que tu essaies de nous dire.
    - tu nous donnais le résultat obtenu de tes exemples, clairement.
    - tu nous disais, clairement, avec de la couleur, où le résultat ne convient pas.

    Mais bon, je pense avoir compris ce que tu racontes, et je ne vois rien dans ton code qui causerait ça. 'Faudrait que j'essaie si j'ai le bug de mon côté, mais ça va me bouffer du temps.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Points : 43
    Points
    43
    Par défaut
    Bonjour,

    Citation Envoyé par thelvin Voir le message
    C'est sûr que ça nous simplifierait la vie si :
    - tu ne confondais pas élément et attribut, et de manière générale si tu exprimais clairement ce que tu essaies de nous dire.

    J'essaie de modifier l'attribut "xmlns:ns0" de cet élément <partnerLink name="AdderPartnerLink" xmlns:ns0="http://AdderService.wsdl" partnerLinkType="ns0:AdderServicePartnerlinkType" partnerRole="adderRole"/>
    en replaçant la valeur en rouge par AdderService1.wsdl


    - tu nous donnais le résultat obtenu de tes exemples, clairement.
    Résultat avec le fichier dernièrement posté est <partnerLinks>
    <partnerLink name="SquarePartnerLink" partnerLinkType="ns2:SquareServicePartnerlinkType" partnerRole="squareRole"/>
    <partnerLink name="MultiplierPartnerLink" partnerLinkType="ns1:MultiplierServicePartnerlinkType" partnerRole="multiplierRole"/>
    <partnerLink xmlns:ns0="http://AdderService1.wsdl" name="AdderPartnerLink" partnerLinkType="ns0:AdderServicePartnerlinkType" partnerRole="adderRole"/>
    <partnerLink xmlns:tns="http://FunctionProcessService.wsdl" myRole="FunctionProcessServicePortTypeRole" name="FunctionProcessPartnerLink" partnerLinkType="tns:FunctionProcessService"/>
    </partnerLinks>

    - tu nous disais, clairement, avec de la couleur, où le résultat ne convient pas.
    nous voyant que les elements au dessus de l'élément en bleu claire leur attributs xmlns:* sont supprimés

    Mais bon, je pense avoir compris ce que tu racontes, et je ne vois rien dans ton code qui causerait ça. 'Faudrait que j'essaie si j'ai le bug de mon côté, mais ça va me bouffer du temps.
    J'espère que j'ai expliqué mon problème.

    Merci

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 557
    Points : 21 616
    Points
    21 616
    Par défaut
    Oui c'est plus clair.

    Je reproduis pas le problème, mais je me demande si ce n'est pas aléatoire.
    Vois-tu, ce que tu essaies de modifier, ce n'est ni un élément, ni un attribut, c'est un namespace. Les trucs en xmlns sont des définitions de namespace, qu'on ne considère normalement pas comme des attributs. Mais c'est vrai que l'implem' du DOM a l'air de le faire quand même, ce qui ne peut pas être correctement géré.

    Je ne sais pas trop comment manipuler les namespaces avec le DOM officiel. C'est tout de même plus simple avec JDOM et son addNamespaceDeclaration() et removeNamespaceDeclaration().

    nous voyant que les elements au dessus de l'élément en bleu claire leur attributs xmlns:* sont supprimés
    Euh non, on ne voit rien du tout, puisqu'on ne sait pas à quoi ressemblait le XML de départ. Mon impression est plutôt qu'il n'y avait jamais eu de xmlns:* dans ces éléments en premier lieu.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Points : 43
    Points
    43
    Par défaut
    Merci Thelvin, J'ai utilisé JDOM et j'ai pu modifier le namespace d'un élément, mais mon problème est bizzard c'est que avec ou sans modifier le document jdom quand j'essaie uniquement de lire et enregistrer le document sans effectuer de changement normalement je dois récupérer mon document de départ. Cependant, le fichier résultat est modifier tout les éléments dont le prefix du namespace xmlns:ns* leur namesapce sont supprimés
    voila mon code java:
    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
    68
    69
    package com.jmdoudoux.test;
     
    import java.io.*;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
     
    import javax.print.attribute.standard.Chromaticity;
    import javax.xml.parsers.*;
    import javax.xml.transform.Result;
    import javax.xml.transform.Source;
    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;
     
    import org.w3c.dom.*;
    import org.jdom.Attribute;
    import org.jdom.Element;
    import org.jdom.Namespace;
    import org.jdom.input.DOMBuilder;
    import org.jdom.input.SAXBuilder;
    import org.jdom.output.*;
     
    public class UpdateBPEL {
     
    	static org.jdom.Document document1;
    	static Element racine;
     
     
     
     
    	 static void enregistreFichier(String fichier) throws Exception
    	   {
    	         XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
    	         sortie.output(document1, new FileOutputStream(fichier));                
     
    	   }
     
     
    	 static void lireFichier(String fichier) throws Exception
    	   {
    	      SAXBuilder sxb = new SAXBuilder();
    	      document1 = sxb.build(new File(fichier));
    	      racine = document1.getRootElement();
    	      System.out.println("racine : " +racine);
    	   }
     
     
     
     
    	public static void main(String[] args) {
     
    		  try
    	       {
    	          lireFichier("E:\\VAR.xml");        
    	          enregistreFichier("E:\\koki.xml");
     
     
    	        }
    	       catch (Exception e) {
    			    e.printStackTrace();
    			  }
     
    	}
     
    }
    Mon fichier XML de départ VAR.xml est :
    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
    <?xml version="1.0" encoding="UTF-8"?>
     
    <process
        name="FunctionProcess"
     
        targetNamespace="http://FunctionProcess.bpel"
        xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
     
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
     
        xmlns:sxt="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/Trace" 
     
        xmlns:sxed="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/Editor"
     
        xmlns:tns="http://FunctionProcess.bpel" xmlns:ns0="http://AdderService.wsdl" xmlns:ns1="http://MultiplierService.wsdl" xmlns:ns2="http://SquareService.wsdl" xmlns:ns3="http://www.example.org/messages" xmlns:ns4="http://ws.apache.org/axis2" xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable">
     
        <import namespace="http://FunctionProcessService.wsdl" location="FunctionProcessService.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
     
        <import namespace="http://AdderService.wsdl" location="AdderService.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
     
        <import namespace="http://MultiplierService.wsdl" location="MultiplierService.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
     
        <import namespace="http://SquareService.wsdl" location="SquareService.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
     
        <partnerLinks>
            <partnerLink name="SquarePartnerLink" xmlns:ns2="http://SquareService.wsdl" partnerLinkType="ns2:SquareServicePartnerlinkType" partnerRole="squareRole"/>
     
            <partnerLink name="MultiplierPartnerLink" xmlns:ns1="http://MultiplierService.wsdl" partnerLinkType="ns1:MultiplierServicePartnerlinkType" partnerRole="multiplierRole"/>
     
            <partnerLink name="AdderPartnerLink" xmlns:ns0="http://AdderService.wsdl" partnerLinkType="ns0:AdderServicePartnerlinkType" partnerRole="adderRole"/>
     
            <partnerLink name="FunctionProcessPartnerLink" xmlns:tns="http://FunctionProcessService.wsdl" partnerLinkType="tns:FunctionProcessService" myRole="FunctionProcessServicePortTypeRole"/>
     
        </partnerLinks>
        <variables>
     
            <variable name="FunctionProcessServiceOperationOutput" xmlns:tns="http://FunctionProcessService.wsdl" messageType="tns:FunctionProcessServiceOperationResponse"/>
     
            <variable name="MultiplyOutput1" messageType="ns1:multiplyResponse"/>
     
            <variable name="MultiplyInput1" messageType="ns1:multiplyRequest"/>
     
            <variable name="FunctionProcessServiceOperationInput" xmlns:tns="http://FunctionProcessService.wsdl" messageType="tns:FunctionProcessServiceOperationRequest"/>
     
            <variable name="MultiplyOutput" xmlns:ns1="http://MultiplierService.wsdl" messageType="ns1:multiplyResponse"/>
     
            <variable name="MultiplyInput" xmlns:ns1="http://MultiplierService.wsdl" messageType="ns1:multiplyRequest"/>
     
            <variable name="SquareOutput" xmlns:ns2="http://SquareService.wsdl" messageType="ns2:squareResponse"/>
     
            <variable name="SquareInput" xmlns:ns2="http://SquareService.wsdl" messageType="ns2:squareRequest"/>
     
            <variable name="AddOutput" xmlns:ns0="http://AdderService.wsdl" messageType="ns0:addResponse"/>
     
            <variable name="AddInput" xmlns:ns0="http://AdderService.wsdl" messageType="ns0:addRequest"/>
     
        </variables>
     
    </process>
    Le fichier résultat est koki
    :
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <process xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:sxt="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/Trace" 
    xmlns:sxed="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/Editor" 
    xmlns:tns="http://FunctionProcess.bpel" xmlns:ns0="http://AdderService.wsdl" 
    xmlns:ns1="http://MultiplierService.wsdl" xmlns:ns2="http://SquareService.wsdl" xmlns:ns3="http://www.example.org/messages" xmlns:ns4="http://ws.apache.org/axis2" 
    xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" name="FunctionProcess" targetNamespace="http://FunctionProcess.bpel">
     
      <import namespace="http://FunctionProcessService.wsdl" location="FunctionProcessService.wsdl" importType="http://schemas.xmlsoap.org/wsdl/" />
      <import namespace="http://AdderService.wsdl" location="AdderService.wsdl" importType="http://schemas.xmlsoap.org/wsdl/" />
      <import namespace="http://MultiplierService.wsdl" location="MultiplierService.wsdl" importType="http://schemas.xmlsoap.org/wsdl/" />
      <import namespace="http://SquareService.wsdl" location="SquareService.wsdl" importType="http://schemas.xmlsoap.org/wsdl/" />
      <partnerLinks>
        <partnerLink name="SquarePartnerLink" partnerLinkType="ns2:SquareServicePartnerlinkType" partnerRole="squareRole" />
        <partnerLink name="MultiplierPartnerLink" partnerLinkType="ns1:MultiplierServicePartnerlinkType" partnerRole="multiplierRole" />
        <partnerLink name="AdderPartnerLink" partnerLinkType="ns0:AdderServicePartnerlinkType" partnerRole="adderRole" />
        <partnerLink xmlns:tns="http://FunctionProcessService.wsdl" name="FunctionProcessPartnerLink" partnerLinkType="tns:FunctionProcessService" myRole="FunctionProcessServicePortTypeRole" />
      </partnerLinks>
      <variables>
        <variable xmlns:tns="http://FunctionProcessService.wsdl" name="FunctionProcessServiceOperationOutput" messageType="tns:FunctionProcessServiceOperationResponse" />
        <variable name="MultiplyOutput1" messageType="ns1:multiplyResponse" />
        <variable name="MultiplyInput1" messageType="ns1:multiplyRequest" />
        <variable xmlns:tns="http://FunctionProcessService.wsdl" name="FunctionProcessServiceOperationInput" messageType="tns:FunctionProcessServiceOperationRequest" />
        <variable name="MultiplyOutput" messageType="ns1:multiplyResponse" />
        <variable name="MultiplyInput" messageType="ns1:multiplyRequest" />
        <variable name="SquareOutput" messageType="ns2:squareResponse" />
        <variable name="SquareInput" messageType="ns2:squareRequest" />
        <variable name="AddOutput" messageType="ns0:addResponse" />
        <variable name="AddInput" messageType="ns0:addRequest" />
      </variables>
    </process>
    Donc l'idée est de garder le même fichier, car avec des modification je trouve mais élément bien modifier mais les namesapces sont supprimés.

    Merciii

  9. #9
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 557
    Points : 21 616
    Points
    21 616
    Par défaut
    Oui, là j'ai bien compris ce qui te chiffonne.

    Seulement, les namespaces en question, ils ne sont pas supprimés, ils sont redondants : ils ont déjà été déclarés pareil dans la racine.
    Il est donc inutile de les déclarer à nouveau ailleurs, sauf si c'est pour changer l'URI associée au préfixe. Pas le cas ici.

    En résumé, tu crois avoir un problème mais tu n'en as pas. Les namespaces sont bien là, juste hérités de la racine.
    Si tu veux quand même les répéter pour que ce soit "plus joli," je ne pense pas qu'une approche DOM convienne : à ma connaissance aucune API style DOM ne peut enregistrer les namespaces redondants.
    Un approche SAX ou StAX peut le faire, par contre. C'est le cas notamment de l'implémentation SAX fournie par Java : elle informe des déclarations de namespace même si elles sont redondantes.

    Se tourner donc par là si tu veux "faire joli."
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Points : 43
    Points
    43
    Par défaut
    Bonsoir,

    J'ai pu résoudre mon problème cela est dû au namespace de l'élément racine.

    Merci beaucoup Thelvin

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

Discussions similaires

  1. [JDOM] Copie et suppresion d'un element dans un fichier xml
    Par riderfun dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 24/03/2009, 10h59
  2. Ajout d'un element dans un fichier XML
    Par vacknov dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/08/2007, 10h26
  3. [C# 2.0] Inserer un element dans un fichier Xml
    Par Khrysby dans le forum Windows Forms
    Réponses: 3
    Dernier message: 12/09/2006, 17h05
  4. [XSLT] remplacement de chaine dans un fichier XML
    Par Eldarion dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 11/07/2006, 13h30
  5. Réponses: 3
    Dernier message: 29/06/2006, 16h54

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