Manipuler des fichier xml avec une interface graphique

Signaler
Messages postés
24
Date d'inscription
vendredi 22 septembre 2006
Statut
Membre
Dernière intervention
31 mars 2010
-
Messages postés
5
Date d'inscription
mardi 29 mai 2007
Statut
Membre
Dernière intervention
2 mai 2009
-
salut

je veut construire un fichier xml en partant d'une interface graphique, c'est a dire que les champs de text sont les elements d'un fichier xml,la dificulte que j'ai  est que je ne trouve pas une solution comment envoyer le continue d'un champ de text(text field) a un element d'une document xml (cree avec dom)

par exemple :
{.....
String element = TextField1.getText();
Element element= doc.createElement(element);
....}

la ligne de code souligne est celle qui provoque l'erreur
la cause de cette erreur est que je nepeut pas defenir un element qui est en fin de compte un String

mais ici je doit avoir ca car j'aime avoir le nom de la balise et de son identificateur identiques

....une solution??

merci c'est urgent

5 réponses

Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
16
String identificateur = TextField1.getText();
Element element = doc.createElement(identificateur);
Messages postés
24
Date d'inscription
vendredi 22 septembre 2006
Statut
Membre
Dernière intervention
31 mars 2010

j'espere que vous ne comprenez pas mon point de vue;

le probleme ici est que pour la programmation d'un algorithme qui extraire les donnees d'un formulaire puis construit un fichier xml avec ces donnees

pour cela il est preferable que les elements doivent avoire le meme nom que le contenue de champ de texte
je cherche encore une solution pour ca
.....
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
16
Il n'est pas possible d'utiliser le même identifiant pour 2 variables différentes.

String my = "hello";
Integer my = 5; // Erreur de compilation

Maintenant s'il s'agit de fabriquer un xml comme celui là :

<root>
   <element1>element1</element1>
   <element2>element2</element2>
   ...
</root>

// Fabrication du noeud racine
Element root = document.createElement("root");

// Fabrication et attachement du premier noeud
String name = "element1";
Element element = document.createElement(name);
element.setTextContent(name);
root.appendChild(element);

// Fabrication et attachement du second noeud
name = "element2";
element = document.createElement(name);
element.setTextContent(name);
root.appendChild(element);
Messages postés
24
Date d'inscription
vendredi 22 septembre 2006
Statut
Membre
Dernière intervention
31 mars 2010

Salut a tous

J'ai creer un parseur SAX qui extraire les donnee (element et leurs attributs) et les affiches dans la sortie standard(console)
j'ai ajoutee ainsi quelques lignes pour recuperer ces donnees dans un matrice pour les utiliser dans d'autres algorithmes , mais la compilation a generer des erreurs

voici l'algorithme : pour le test

package parseuravecsax;

//Parse un document XML en java avec L'API SAX
//on importe les APIs necessaire pour l'analyse du XML
import javax.swing.*;
import org.xml.sax.*;
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
//pour l'acces au fichierS
import java.io.*;

public class AnalyseSAX extends DefaultHandler
{
//declaration d'un matrice et les compteurs
    public String[][] ELEMENTS_ATTRIBUTS; //tableau pour recuperer les donnees extraitent du fichier
    int x = 0;
    int y = 0;

    //Methode principale
    public void Parseur_fichier(String nomFichier)
    {

        //si le fichier qui est passe en argument est oublie --->erreur
        if (nomFichier.isEmpty() == true)
        {
            System.out.println("erreur, Le fichier est endommagee ou il n'existe pas");
            System.exit(1);
        }
        //on lance l'analyseur avec le fichier xml en parametre
        DefaultHandler handler = new AnalyseSAX();
        SAXParserFactory factory;
        factory = SAXParserFactory.newInstance();
        try
        {
            SAXParser saxparser = factory.newSAXParser();
            saxparser.parse(new File(nomFichier), handler);
        }
        catch (Throwable t)
        {
            //Si on a une erreur pendant l'analyse
            t.printStackTrace();
            System.exit(1);
        }
//        System.exit(0);
    }
//fin de L'analyse
    //les methodes qui suivnet sont appelees automatiquement par l'analyseur
    //lorsqu'un evenement  est detectee dans le fichier xml
    @Override
    public void startDocument() throws SAXException
    {
        System.out.println("debut du document");
    }

    @Override
    public void endDocument() throws SAXException
    {
        System.out.println("fin du document");
    }

    @Override
    public void startElement(String namespaceURI, String sName, String qName, Attributes attrs) throws SAXException
    {
        String eName = sName;
        if ("".equals(eName))
        {
            eName = qName;
        }
        System.out.println("balise ouverte:" + eName);

// recuperation de L'element trouvee dans le tableau --->ligne x colonne 0
        ELEMENTS_ATTRIBUTS[x][0].concat(eName);
        x += 1;
       
        if (attrs != null)
        {
            //Listage des attributs
            if (attrs.getLength() != 0)
            {
                System.out.println("Listage des parametres pour la balise " + eName + ":");
            }
            for (int i = 0; i < attrs.getLength(); i++)
            {
                String aName = attrs.getLocalName(i);//recuperation du nom de l'attribut
                if ("".equals(aName))
                {
                    aName = attrs.getQName(i);
                }
                System.out.println(" " + aName + "="" + attrs.getValue(i) + """);

//recuperation des valeurs des attributs dans les colonnes de tableau ---> par exemple ligne 1 colonne y             
                ELEMENTS_ATTRIBUTS[x][y].concat(attrs.getValue(i));
                y = i;
            }
        }
    }

    @Override
    public void endElement(String namespaceURI, String simpleName, String qualifiedName) throws SAXException
    {
        String nomElement = simpleName;
        if (nomElement.equals(""))
        {
            nomElement = qualifiedName;
        }
        System.out.println("Balise fermée : " + nomElement);
    }

    @Override
    public void characters(char[] ch, int start, int end) throws SAXException
    {
        String chaine = new String(ch, start, end);
        chaine = chaine.trim();
        if (!chaine.equals(""))
        {
            System.out.println("donnees : " + chaine);
        }
    }

    public void affichage_tab()
    {
        System.out.println("");
        System.out.println("le tableau");
        for (int i = 0; i < ELEMENTS_ATTRIBUTS.length; i++)
        {
            for (int j = 0; j < ELEMENTS_ATTRIBUTS[i].length; j++)
            {
                System.out.println(ELEMENTS_ATTRIBUTS[i][j]);
            }
        }
    }
}
....

pour les lignes en rouge L'erreur est provoquee car je n'ai pas initialiser le tableau
apres l'initialisation le programme marche mais apres l'execution de la methode en vert(affichage_tab) le tableau s'affichera avec les valeurs initials de la declaration faite

un solution.....?
Messages postés
5
Date d'inscription
mardi 29 mai 2007
Statut
Membre
Dernière intervention
2 mai 2009

salut
j'ai besoin de votre aide d'un cours sur le parseur xml en netbeans 6.5
et merci pour votre aide