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 :

Supprimer les namespaces dans un fichier XML [StAX]


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 177
    Par défaut Supprimer les namespaces dans un fichier XML
    Bonjour à tous,
    j'utilise Stax pour parser un fichier XML( le but est de deviser un grand fichier XML en plusieurs petits fichiers XML) 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
        private void split(String xmlResource, String condition) throws Exception {
        	XMLEventFactory xef = XMLEventFactory.newFactory();
        	XMLInputFactory xif = XMLInputFactory.newInstance();        
        	XMLEventReader xer = xif.createXMLEventReader(new FileReader(xmlResource));         	 
        	StartDocument startDocument = xef.createStartDocument();
     
        	while(xer.hasNext() && !xer.peek().isEndDocument()) {
        		boolean metCondition;
        		XMLEvent xmlEvent = xer.nextTag();
        		if(!xmlEvent.isStartElement()) {
        			break;
        		}
     
        		StartElement breakStartElement = xmlEvent.asStartElement();
        		List<XMLEvent> cachedXMLEvents = new ArrayList<XMLEvent>();
        		List<String> cachedXMLEvent = new ArrayList<String>();
     
        		if(null == condition) {
        			cachedXMLEvents.add(breakStartElement);
        			metCondition = true;
        		} else {
        			cachedXMLEvents.add(breakStartElement);
        			xmlEvent = xer.nextEvent();
        			metCondition = false;
        			while(!(xmlEvent.isEndElement() && xmlEvent.asEndElement().getName().equals(breakStartElement.getName()))) {
        				cachedXMLEvents.add(xmlEvent);
        				cachedXMLEvent.add(xmlEvent.toString());
        				if(xmlEvent.isStartElement() && xmlEvent.asStartElement().getName().getLocalPart().equals(condition)) {
        					metCondition = true;
        					break;
        				}
        				xmlEvent = xer.nextEvent();
        			}
        		}
        		cachedXMLEvents.add(xmlEvent);
        		metCondition = true;            
     
        		if(metCondition) {
        			// Create a file for the fragment, the name is derived from the value of the id attribute
        			FileWriter fileWriter = new FileWriter("c:/test.xml");
        			DocumentBuilderFactory dbFactory_ = DocumentBuilderFactory.newInstance();
        			dbFactory_.setNamespaceAware(false);
        			Document doc_;
        			DocumentBuilder dBuilder = dbFactory_.newDocumentBuilder();
     
        			String  temp=startDocument.toString();
     
        			// Write the XMLEvents that were cached while when we were
        			// checking the fragment to see if it matched our criteria.
        			for(XMLEvent cachedEvent : cachedXMLEvents) {
        				temp+=cachedEvent.toString();
     
        			}
     
        		}
        	}
        }
    le traitement fonctionne correctement, mais à la fin dans la variable "temp" je me trouve avec un fichier xml avec des namespaces dans tous les élements, exemple:
    <?xml version="1.0" encoding='UTF-8'?>
    <['http://www.tibco.com/schemas/splitter/Resources/Schema.xsd']::staff>
    <['http://www.tibco.com/schemas/splitter/Resources/Schema.xsd']::firstname>yong</['http://www.tibco.com/schemas/splitter/Resources/Schema.xsd']::firstname>
    <['http://www.tibco.com/schemas/splitter/Resources/Schema.xsd']::lastname>mook kim</['http://www.tibco.com/schemas/splitter/Resources/Schema.xsd']::lastname>
    <['http://www.tibco.com/schemas/splitter/Resources/Schema.xsd']::nickname>mkyong</['http://www.tibco.com/schemas/splitter/Resources/Schema.xsd']::nickname>
    <['http://www.tibco.com/schemas/splitter/Resources/Schema.xsd']::salary>100000</['http://www.tibco.com/schemas/splitter/Resources/Schema.xsd']::salary>
    </['http://www.tibco.com/schemas/splitter/Resources/Schema.xsd']::staff>
    comment faire pour supprimer les namespaces ? je ne veux pas écrire le résultat dans un fichier en utilisant XMLEventWriter, car je souhaite envoyer le String via JMS.

    merci de votre aide.

  2. #2
    Modérateur
    Avatar de paissad
    Homme Profil pro
    Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Inscrit en
    Avril 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 043
    Par défaut
    Bonjour,
    je ne pense pas que cela soit possible, ... car il faut savoir que le namespace fait partie du nom du tag/balise. Donc si tu décides de le supprimer, c'est comme si tu renommais la balise, ... ça va à l'encontre des spécifications.
    P
    Nous n'héritons pas de la terre de nos parents, nous l'empruntons à nos enfants.
    Le chat du site est aussi ici pour aider. Ne pas hésiter à visiter !

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

Discussions similaires

  1. Comment supprimer du texte dans un fichier XML
    Par sheira dans le forum Langage
    Réponses: 12
    Dernier message: 29/12/2010, 15h47
  2. Ajouter des namespace dans un fichier XML
    Par Septembre84 dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 19/05/2008, 12h20
  3. supprimer les donnés dans un fichier en vb
    Par rokirakat dans le forum VB.NET
    Réponses: 3
    Dernier message: 17/02/2008, 21h26
  4. [](VB) Récupérer les données dans un fichier .xml
    Par Furius dans le forum VBScript
    Réponses: 4
    Dernier message: 02/10/2005, 20h39
  5. Supprimer les guillemets dans un fichier après écriture
    Par soulryo dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 01/03/2005, 11h39

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