Page 1 sur 4 123 ... DernièreDernière
Résultats de 1 à 10 sur 38

Sujet : [PARSE][HTMLEDITORKIT] Ajout d'attribut

  1. #1
    Visiteur MP
    Visiteur MP

    [PARSE][HTMLEDITORKIT] Ajout d'attribut

    Bonjour à tous,

    Et oui me revoilà avec mon parse.
    Alors là j\'ai une petite colle, dont je n\'arrive pas à me dépatouiller.

    En gros (pour zeb qui connait l\'histoire) :
    J\'ai ma classe étendue de : HTMLEditorKit.ParserCallback
    Puis j\'utilise des fonction de parse, dont celle ci :
    public void handleSimpleTag(HTML.Tag tag,MutableAttributeSet set,int i)
    {...}

    Qui permet de trouver un tag dans un flux, de repérer un attribut et la valeur qui lui ait associée.

    exemple :
    Code:
    if(tag.equals(HTML.Tag.IMG))
                {	
    // On recupere l\'attribut correspondant au src de l\'image
    Object src=set.getAttribute(HTML.Attribute.SRC);
    image_alt.src=(String)src;
    Là par exemple j\'ai récupérer l\'adresse de l\'image (son lien).

    Les tag et les attributs font parti d\'une liste :
    La class HTML :
    http://java.sun.com/j2se/1.3/docs/api/javax/swing/text/html/HTML.html
    Pour les Tag :
    http://java.sun.com/j2se/1.3/docs/api/javax/swing/text/html/HTML.Tag.html
    Pour les attributs :
    http://java.sun.com/j2se/1.3/docs/api/javax/swing/text/html/HTML.Attribute.html

    J\'arrive bien à modifier le tag de recherche, sous entendu en ajouter dans la liste des HTMLTag comme ceci :
    Code:
    private HTML.Tag tag = new HTML.UnknownTag(\"NOUVEAU_TAG\");
    Mais je n\'y arrive pas pour les attributs...

    Voilà si qq\'un a une solution, je suis preneur.

    Je sais le challenge est difficile...
    Merci,

    ++

  2. #2
    Membre MP
    Inscrit
    août 2013
    Messages
    1 823
    getAttributeKey
    public static HTML.Attribute getAttributeKey(String attName)Fetch an attribute constant for a well-known attribute name (i.e. one of the attributes in the set allAttributes). If the given name does not represent one of the well-known attributes, then null will be returned.
    je suis pas du tout certain que tu puisse ajouter des attributs supplementaires dans ce complexe de classes.

    pour le tag c\'est pas le prob je voie bien que c\'est prevu :

    Inner Class Summary
    static class HTML.Attribute
    Typesafe enumeration representing an html attribute.
    static class HTML.Tag
    Typesafe enumeration for an html tag.
    static class HTML.UnknownTag
    Mais pour les Attributs ...

  3. #3
    Membre MP
    Inscrit
    août 2013
    Messages
    1 823
    Tu cherche a lire un attribut inconu ?

    Normalement tu ne devrai pas être confronté a ce problème dans ton cas de figure .

    je comprend pas pourquoi.

  4. #4
    Visiteur MP
    Visiteur MP
    Ouais c\'est bien ce dont j\'avais peur... Je ne crois pas que l\'on puisse ajouter un attribut.

    En fait je vais lire des attributs inconnus, car je parse toute sorte de langage. et que ces methodes sont à la base faites pour du HTML.
    Or moi je parse du XHTML, XML, WML ...
    Donc je me retrouve avec des Tag et des Attributs non connus...

    Voilà voilà.

    Bon en fait ma solution car j\'ai aussi des galères sur les Tag du style : <?xml ou <!DOCTYPE à cause des signes de ponctuation que parsercallback n\'aime pas, mais alors pas du tout...
    donc je pense qu\'en plus de mon parse, je vais devoir stocker mon flux dans un fichier texte et manipuler des REGEX dessus...

    Argh ça me gave de retourner à la version de Cromagnon avec les pattern et les matcher...

    J\'ai récupéré et codé un truc au début de mon projet, du style :
    Code:
    import java.io.*;
    import java.util.regex.*;
    import java.lang.*;
    
    public final class RegexTestHarness {
    
        private static String REGEX;
        private static String INPUT;
        private static BufferedReader br;
        private static Pattern pattern;
        private static Matcher matcher;
        private static boolean found;
    
        public static void main(String[] argv) {
            initResources();
            processTest();
            closeResources();
        }
    
        private static void initResources() {
           try {
               br = new BufferedReader(new FileReader(\"contenu.txt\"));
           }
           catch (FileNotFoundException fnfe) {
                System.out.println(\"Cannot locate input file! \"+fnfe.getMessage());
                System.exit(0);
            }
           try {
               REGEX = br.readLine();
               REGEX = \"href *= *([\\\"\\\'])([^\\\"\\\']*)(\\\"\\\')\";
               } catch (IOException ioe) {}
    
            pattern = Pattern.compile(REGEX);
            matcher = pattern.matcher(INPUT);
    
            System.out.println(\"Current REGEX is: \"+REGEX);
            System.out.println(\"Current INPUT is: \"+INPUT);
        }
    
        private static void processTest() {
            while(matcher.find()) {
                System.out.println(\"I found the text \\\"\" + matcher.group() +
                                   \"\\\" starting at index \" + matcher.start() +
                                   \" and ending at index \" + matcher.end() + \".\");
                found = true;
            }
    
            if(!found){
                System.out.println(\"No match found.\");
            }
        }
    
        private static void closeResources() {
           try{
               br.close();
           }catch(IOException ioe){}
        }
    }
    En fait là ce qu\'il me faut c\'est codé un chercheur de tag et d\'attribut.
    En gros je lis mon fichier texte. Je veux :

    Récupérer les deux premières lignes. ça ok. un simple readLine() devrait suffir.
    Ensuite je veux savoir si j\'ai bien dans mon fichier deux balises <wml> et </wml>.
    Enfin je veux récupérer le contenu d\'un seul lien de la forme : ONTIMER=\"http://blabla\". Si j\'en suis là dans mon parse, ce sera le seul lien du texte, tous les autres auront pu etre trouvés par ma méthode de parse que j\'ai déjà mise au point.

    Voilà si tu as un truc dans tes classeurs qui ressemble à ça, je suis preneur...

    ++

    :wink:

  5. #5
    Membre MP
    Inscrit
    août 2013
    Messages
    1 823
    tu veux pas parser le flux directement tu prefere passer par un fichier ?


    est il envisageable de limiter le prog a une balise seulement;

    <mabalise monattribu1=\'\' monattribu2=\"\" />

  6. #6
    Membre MP
    Inscrit
    août 2013
    Messages
    1 823
    ou encore (j\'oubliais)

    <mabalise monparam=\'\' >blabla</mabalise>

  7. #7
    Visiteur MP
    Visiteur MP
    En fait, pour parser le flux directement, il faut que je fasse une requete et que je lise la réponse. Or j\'ai déjà tout un parse à faire de cette manière. Donc si je veux réeffectuer un autre parse en meme temps (pour pouvoir trouver tout ce que je viens de dire) il faut que je refasse une requete, donc ça a un coût.

    Sinon je ne comprends pas trop tes exemples.
    Admettons que j\'ai un flux avec dedans la ligne :
    <?xml version=\"1.0\" encoding=\"ISO-8859-1\"?> par exemple.

    Comment (avec ta technique), je peux récupérer le contenu du champ \"encoding\", c à d le ISO-8859-1.

    Merci,
    ++

  8. #8
    Membre MP
    Inscrit
    août 2013
    Messages
    1 823
    le but de ma question étais de savoir la tête des arguments de la fonction qu\'il faux ecrire.

    j\'en deduis que la signature de depart des fonction peuvent être :

    public String[] getAttributNames(String monChamp){}

    public String[] getAttributValues(String monChamp){}

    ai je raison de penser que s\'est ce dont tu as besoin ?

  9. #9
    Visiteur MP
    Visiteur MP
    Bien entendu c\'est tout à fait ça dont j\'ai besoin.
    Maintenant il faut manipuler ça avec des REGEX, enfin je pense.

    J\'avais aussi penser faire un classe privée mais bon je pense que ça ne va pas marcher, bref :

    Code:
    private class NewAttribut extends HTML.Attribute
    {
       public NewAttribut (String att)
             { 
             super(att);
    	}
    }
    Voili voilou,
    Tu pense que je vais devoir stocker dans un fichier ? Tu crois que c\'est laborieux de devoir parser avec des regex pour trouver exactement l\'attribut et sa valeur que je souhaite ??

  10. #10
    Membre MP
    Inscrit
    août 2013
    Messages
    1 823
    En fait il faudrai que tu me dise si l\'existant est capable d\'isoler une string du type

    \"< xxxxxxxxxxxxx />\" et \"< xxxx > yyyyy </xxxx>\"

    si oui c\'est plus un prob, il y en a pour une heure sans ajouter de classe (seulement deux methodes privées dans la classe qui \'isole\' les string si dessus)

    Pour les regex, c\'est pas forcement indispenssable (compliqué bien qu\'eficace) il sufit juste de rechercher des espaces entre des \'mot\' et ensuite de les couper en deux vis a vis du signe \'=\'

Page 1 sur 4 123 ... DernièreDernière

Informations du sujet

Utilisateur(s) parcourant ce sujet

il y a actuellement 1 utilisateur(s) parcourant ce sujet. (0 membre(s) et 1 visiteur(s))

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas éditer vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Activé
  • Le code HTML est Désactivé
Please disable Adblock!