begin process at 2012 02 15 19:58:00
  Trouver un code source :
 
dans
 
Accueil > Forum > 

JAVA / J2EE / J2ME

 > 

Divers

 > 

Général

 > 

Remplacer la valeur d'un attribut dans un fichier xml utilisant DOM


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Remplacer la valeur d'un attribut dans un fichier xml utilisant DOM

jeudi 26 août 2010 à 15:06:01 | Remplacer la valeur d'un attribut dans un fichier xml utilisant DOM

infkb

Bonjour,

J'ai un fichier xml dont voici la source:

Code XML :
<?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>


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

Voici le code java:
Code Java :
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();
			  }
 
	}
 
}
 

Résultat dans le fichier FunctionProcesstest2: est
Code XML :
<partnerLinks>
<partnerLink name="SquarePartnerLink" partnerLinkType="ns2:SquareServicePartnerlinkType" partnerRole="squareRole"/>
<partnerLink name="MultiplierPartnerLink" partnerLinkType="ns1:MultiplierServicePartnerlinkType" partnerRole="multiplierRole"/>
[b]<partnerLink xmlns:ns0="http://AdderService1.wsdl" name="AdderPartnerLink" partnerLinkType="ns0:AdderServicePartnerlinkType" partnerRole="adderRole"/>[/b]
<partnerLink xmlns:tns="http://FunctionProcessService.wsdl" myRole="FunctionProcessServicePortTypeRole" name="FunctionProcessPartnerLink" partnerLinkType="tns:FunctionProcessService"/>
</partnerLinks>


Nous voyant que les éléments au dessus de l'élément en gras[b] leur attributs xmlns:* sont supprimés, je ne sais ceci est du a quoi exactement sachant si je prends a fichier xml source moins volumineux contenant que les partnerlink mon programme marche

J'espère que j'ai expliqué mon problème.

Merci d'avance pour votre aide
vendredi 27 août 2010 à 11:57:20 | Re : Remplacer la valeur d'un attribut dans un fichier xml utilisant DOM

infkb

Bonjour,

Comme je n'ai pas encore reçu de reponse,je me dis est ce que j'ai posté ma question sur le mauvais thème???

Merci
lundi 30 août 2010 à 01:38:21 | Re : Remplacer la valeur d'un attribut dans un fichier xml utilisant DOM

infkb

Réponse acceptée !
Bonsoir,

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


Cette discussion est classée dans : file, xml, import, javax, transform


Répondre à ce message

Sujets en rapport avec ce message

XSL et BufferedOutputStream [ par Aquarius28 ] Bonjour, Je souhaite stocker le résultat d'une transformation xsl dans un flux et non d'un fichier. normalement on fait : javax.xml.transform.stream. manipuler un document xml avec jtree [ par noussala ] bonjour a tous,voila j'aimerai pouvoire afficher les feuille d'un arbre jtree ,quand on selectionne un noeud afficher ses feuille, j'ai ce code qui me entrer le doc xml en paramètre???????? [ par blatifa2008 ] Bonjour,j'ai posé mon problème plusieur fois et j'ai essayer de le résoudre mais je n'arrive à rien svp s'il y a qlq un peut m'aider parce que c'est t Pleased Help: Parser du XML [ par Rom1S ] Bonjour,Je cherche à parser un fichier XML de ce type : http://www.w3.org/2001/XMLSchema-instance" xsi:noNa arabe [ par nabilwael ] Bonjour , jé réalisé une classe qui permer de parser un fichier XML en arab et enregistrer le resultat dans un fichier texte mais le résultat est diff creation fichier xml [ par Nico_35136 ] Bonsoir, Voila premièrement je sais pas si je suis dans la bonne section, mais je ne sais pas trop ou mettre ma question. mille excuse... Voila ce q utilisation de JTree [ par ezzineahmed ] bonjour à tous, je viens de trouver un code dans ce site qui affiche la liste des fichiers du disque c:, quelqu'un peut m'aider pour que ce code affic manipulation des interfaces en J2ME [ par heros12 ] Salut pour tout le monde , alors dans le cadre d'un exercice j'ai besoin de préparer des interfaces sur un mobile à l'aide de la frame work J2ME alors coloriage d'une ligne d'un jtable automatiquement sans la sélectionner [ par noussaannousa ] j'ai essayé ces deux classes mais encore ça va pas marché :( import java.awt.Color; import java.awt.Component; import javax.swing.JTable; import ja affichage dynamique et périodique d'images dans une jsp à partir d'une servlet [ par coccolata ] bonsoir, je débute avec tomcat et les servlets..et voila la galère commence!!! dans un autre post ils m'ont affirmé la faisabilté de ce que je compte


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,328 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales