Parseur xml

neg03 Messages postés 95 Date d'inscription jeudi 7 mai 2009 Statut Membre Dernière intervention 3 juillet 2009 - 29 juin 2009 à 10:18
neg03 Messages postés 95 Date d'inscription jeudi 7 mai 2009 Statut Membre Dernière intervention 3 juillet 2009 - 30 juin 2009 à 09:11
Bonjour,
J'ai réalisé un parseur XML qui récupère certaines informations entre des balises et les insére dans une base de données.
Mon problème est que je dois récupérer dans une balise du code html que je souhaite insérer dans ma base de données tels quel c'est à dire avec les balises html.
Le souci est que j'insère bien les données mais dans ma base de données il supprime les balises html par conséquent quand je souhaite afficher les données elles sont écrites les unes à la suite des autres sans la disposition pré établi avec les balises html.

 public void startElement(String nameSpaceURI, String localName, String rawName, Attributes attributs) throws SAXException {
                if(localName.equals("document"))
                {
                oitem=true;
                }
                if(oitem==true)
                {
                if(localName.equals("titre"))
                {
                otitre=true;
                }
                if(localName.equals("htmlpage"))
                {
                odescription=true;
                }
                         
         }
     }


Merci d'avance

6 réponses

neg03 Messages postés 95 Date d'inscription jeudi 7 mai 2009 Statut Membre Dernière intervention 3 juillet 2009
29 juin 2009 à 10:20
Désolé mon premier message est illisible.

Bonjour, J'ai réalisé un parseur XML qui récupère certaines informations entre des balises et les insére dans une base de données. Mon problème est que je dois récupérer dans une balise du code html que je souhaite insérer dans ma base de données tels quel c'est à dire avec les balises html. Le souci est que j'insère bien les données mais dans ma base de données il supprime les balises html par conséquent quand je souhaite afficher les données elles sont écrites les unes à la suite des autres sans la disposition pré établi avec les balises html.
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
29 juin 2009 à 10:25
Salut,

Ton message nous montre en rien comment tu récupères les valeurs de la balise en question et comment tu l'insère dans la base de données : tu ne fais que passer des variables à true...

Je ne vois pas pourquoi la base de données ne stockerai pas les balises HTML : es-tu sûr d'insérer les données avec les balises HTML ? Les balises html posent problème dans un fichier xml car elles contiennent des caractères réservées, tels que "<", ">", etc. vérifie que tu récupères bien les bonnes données avant de les insérer en base, je pense que ton problème est là !
0
neg03 Messages postés 95 Date d'inscription jeudi 7 mai 2009 Statut Membre Dernière intervention 3 juillet 2009
29 juin 2009 à 10:38
Merci d'avoir répondu, voila une partie de mon code ou j'insère mes valeurs :

        public void startElement(String nameSpaceURI, String localName, String rawName, Attributes attributs) throws SAXException {
                if(localName.equals("document"))
                {
                oitem=true;
                }
                if(oitem==true)
                {
                if(localName.equals("titre"))
                {
                otitre=true;
                }
                if(localName.equals("htmlpage"))
                {
                odescription=true;
                }
                         
         }
     }

         public void endElement(String nameSpaceURI, String localName, String rawName) throws SAXException {
        		
               if(localName.equals("document"))
                {
      			try {
String query = "select * from jos_content";
rs = s.executeQuery(query);
while (rs.next()) {
if(rs.getString("title").equals(titre) && rs.getString("introtext").equals(description))
{
bool=false;
System.out.println("pas d'insertion pour " + titre);
break;
}
else
{
bool=true;
}
}
} catch (SQLException e) {
e.printStackTrace();
}

                	if(bool)
                	{
                	
                		try {
        //Récupère tous les flux
         PreparedStatement ps = c.prepareStatement("insert into jos_content (`title`,`introtext`) values(?,?)");

        //Insert les différents champs dans la requête
         ps.setObject(1,titre );
         ps.setObject(2,description );
         ps.executeUpdate();
        } catch (SQLException ex) {
        System.out.println("probleme SQL pour inserer la news"+ex);
                                    }
         catch (Exception e) {
        System.out.println("proble pour inserer la news"+e);
                                    }
                		System.out.println("insertion ok pour " + titre);
                	}
                	 //Remet les variables à null pour l'article suivant
            titre="";
            description="";
           
                }
                if(localName.equals("document"))
                {
                oitem=false;
                }
                if(localName.equals("titre"))
                {
                otitre=false;
                }
                if(localName.equals("htmlpage"))
                {
                odescription=false;
                }                           
        }


Je récupère bien les bonnes données avant de les insérer en base mais mon souci et que j'insère les données sans les balises html.
0
neg03 Messages postés 95 Date d'inscription jeudi 7 mai 2009 Statut Membre Dernière intervention 3 juillet 2009
29 juin 2009 à 11:16
En faite mon problème vient d'ici :
/**
         * Evenement recu a chaque fois que l'analyseur rencontre des caracteres (entre
         * deux balises).
         * @param ch les caracteres proprement dits.
         * @param start le rang du premier caractere a traiter effectivement.
         * @param end le rang du dernier caractere a traiter effectivement
         * @see org.xml.sax.ContentHandler#characters(char[], int, int)
         */
  public void characters(char[] ch, int start, int end) throws SAXException {
                

                //Si on est dans un article
                if(oitem==true )
                   {
                if(otitre==true)
                   {
                	String data1=new String(ch, start, end);
                	titre+=data1;
                   }
                if(odescription==true)
                   {
                	String data2=new String(ch, start, end);
                	description+=data2;
                   }
             }
        }


Pour insérer le titre il n'y a aucun problème mais pour la description qui contient les balises html ça ne fonctionne pas car ça ne m'affiche que le contenu entre les balises html.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
30 juin 2009 à 07:19
Oui c'est bien ce que je te dit depuis 2-3 posts : le parseur XML ignore les balises HTML apparement, il faut que tu corrige le contenu de ton fichier xml qui ne doit pas être correct, et encodé les caractères interdits tels que "<", ">", "=", """, etc.
0
neg03 Messages postés 95 Date d'inscription jeudi 7 mai 2009 Statut Membre Dernière intervention 3 juillet 2009
30 juin 2009 à 09:11
Ok merci bien je vais regarder ça.
0
Rejoignez-nous