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

MATLAB Discussion :

Ajouter des balises html à un fichier


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 134
    Par défaut Ajouter des balises html à un fichier
    Salut à tous.

    Bon alors je me suis peut-être complètement planté de forum, c'est vous qui allez me le dire, auquel cas n'hésitez pas à me rediriger, mais j'ai un petit programme à écrire et matlab est le seul langage de "programmation" que je maîtrise à peu près, alors...

    J'ai besoin de votre avis sur la faisabilité d'une tâche sous matlab.

    Je souhaite, à partir de fichiers textes, ajouter des balises html très simples dans le texte. Par exemple, entourer chaque paragraphe de <p></p>, entourer chaque titre de <h2></h2>, et pourquoi pas une balise <img /> à la place des images, on peut rêver, non ?

    Je sais qu'il existe une fonction "exporter en html" sous open office par exemple, mais moi je ne veux pas ça, c'est trop compliqué, y'a des span et des class partout, du css mélangé au html, moi je veux juste rajouter les quelques balises citées ci-dessus.

    Donc je voulais savoir si je pouvais faire ça sous matlab a priori, à l'aide de fonctions textread et comparaison de chaînes de caractères par exemple, pour identifier les structures, mais modifier un fichier texte est-ce possible ?


    "Complètement à l'ouest le type", je vous vois déjà venir.
    Pas faux. Alors si c'est vraiment pas possible, dites-moi quel langage serait le mieux adapté pour ce genre de tâche, et j'irai consulter les tutoriels appropriés.


    Merci d'avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Citation Envoyé par fuyo2004 Voir le message
    Je souhaite, à partir de fichiers textes, ajouter des balises html très simples dans le texte. Par exemple, entourer chaque paragraphe de <p></p>, entourer chaque titre de <h2></h2>, et pourquoi pas une balise <img /> à la place des images
    Comment comptes-tu différencier ces types de données HTML dans ton fichier text ?

    Il n'y a guère de différence entre un titre et un paragraphe dans un fichiers text...
    Et pour l'image, je n'en ai encore jamais vue dans un fichier text (sauf en ascii art )

    Aurais-tu un exemple à nous donner ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 134
    Par défaut
    Eh bien par exemple, je rentre chaque ligne de mon fichier texte dans une variable différente, et je regarde pour une variable donnée si la variable qui la suit et la variable qui la précède sont vides. Si oui j'en conclus que c'est un titre, si non une ligne de paragraphe.

    Pour les images oui désolé il n'y aurait pas d'images dans mes fichiers textes, c'est juste parce que mes documents sont au format .odt à la base, mais textread n'accepte pas ces formats je crois.


    Hum, sinon j'y pense, mais open office encode en xml je crois, et en ouvrant mes documents avec un gestionnaire d'archive je peux avoir accès un fichier .xml, plus facile à traiter ?

    Par contre c'est le gros bazar dans ce fichier, je suis pas sûr que ce soit beaucoup plus simple de passer par un fichier qui a déjà des balises mais pas les bonnes que un fichier qui ne possède pas du tout de balises.

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 134
    Par défaut
    Sauf qu'avec le fichier .xml, impossible de faire ce que je voulais plus haut, puisque tout le contenu est mis à la suite dans des balises.

    Pour exemple, je vous mets en pièces jointes un fichier open office, et son codage .xml correspondant (enfin une partie) :

    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
     
    <text:p text:style-name="P1">Titre général (en police 16 et centré)</text:p>
    <text:p text:style-name="P1"/><text:p text:style-name="P1"/><text:p 
    text:style-name="P3">I/ Titre de partie police 14</text:p><text:p text:style-
    name="P3"/><text:p text:style-name="P2"><text:tab/>Ceci est un 
    paragraphe d&apos;essai pour tester la codification xml d&apos;open office. 
    Il contient du texte normal, du <text:span text:style-name="T1">texte en 
    italique</text:span>, ainsi que du <text:span text:style-name="T2">texte en 
    gras</text:span>. Le tout est en police times new roman taille 12.</text:p>
    <text:p text:style-name="P2"/><text:p text:style-name="P2">
    <text:tab/>Ceci est un deuxième paragraphe, qui permet en même temps de
     tester le codage d&apos;une image sous open office :</text:p><text:p 
    text:style-name="P2"/><text:p text:style-name="P2"><draw:frame 
    draw:style-name="fr1" draw:name="images1" text:anchor-type="paragraph" 
    svg:width="8.019cm" svg:height="6.244cm" draw:z-index="0"><draw:image 
    xlink:href="Pictures/1000000000000177000001249E7F46BE.jpg" 
    xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/>
    </draw:frame></text:p>

    Y'a pas un coup à jouer de ce côté là ? C'est possible de rechercher une chaîne de caractères spécifique dans un fichier et la remplacer par une autre avec matlab ?


    Tiens et puis voilà le fichier html obtenu grace à la fonction "exporter" d'open office. Il m'a l'air moins compliqué que le précédent quand même.

    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
     
    	</style></head><body dir="ltr" style="max-width:20.999cm;margin-
    top:2cm; margin-bottom:2cm; margin-left:2cm; margin-right:2cm; "><p 
    class="P1">Titre général (en police 16 et centré)</p><p class="P1">*</p><p 
    class="P1">*</p><p class="P3">I/ Titre de partie police 14</p><p 
    class="P3">*</p><p class="P2"><span style="margin-left:;"/>Ceci est un 
    paragraphe d'essai pour tester la codification xml d'open office. Il contient du
     texte normal, du <span class="T1">texte en italique</span>, ainsi que du 
    <span class="T2">texte en gras</span>. Le tout est en police times new 
    roman taille 12.</p><p class="P2">*</p><p class="P2"><span style="margin-
    left:;"/>Ceci est un deuxième paragraphe, qui permet en même temps de 
    tester le codage d'une image sous open office :</p><p class="P2">*</p><div 
    class="P2"><div style="height: 6.244cm;width: 8.019cm;" id="images1" 
    class="fr1"><p><img width="350" height="273" alt="" src="data:image/*;
    base64,/"très longue suite de caractères"/9k="/></p></div></div></body>
    </html>

    Donc maintenant, ne reste plus qu'à trouver une solution pour expurger un de ces deux fichiers, remplacer par exemple tous les <p class="P3"> par des <h2> dans le fichier html.

    Par contre, d'un fichier à l'autre, je suis pas sûr que la valeur de l'argument de class soit le même, ce qui me pose un problème si je veux écrire un programme qui tourne pour tous mes fichiers.
    Images attachées Images attachées  

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Euh... on part un peu dans tous les sens la, non ?

    Revenons à la question de départ.

    Tu as un fichier test.txt qui contient ceci :

    Ceci est un titre
    Ceci est un sous-titre
    Ceci est un paragraphe
    Il n'y a pas de mise en forme car c'est un simple fichier txt

    Et tu voudrais le transformer en un équivalent HTML :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <html>
    	<head>
    		<title>test.html issu de test.txt</title>
    	</head>
    	<body>
    		<h1>Ceci est un titre</h1>
    		<h2>Ceci est un sous-titre</h2>
    		<p>Ceci est un paragraphe</p>
    	</body>
    </html>

    Le problème, c'est que dans le fichier txt, toutes les données se ressemblent...

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Citation Envoyé par fuyo2004 Voir le message
    Par contre, d'un fichier à l'autre, je suis pas sûr que la valeur de l'argument de class soit le même, ce qui me pose un problème si je veux écrire un programme qui tourne pour tous mes fichiers.
    Je me posais aussi cette question... dans le cas du fichier HTML généré par Open Office, il doit bien y avoir un fichier de style ou bien des données écrites dans le bloc <head></head> entre des balises <style></style>, non ?

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 134
    Par défaut
    Citation Envoyé par Dut Voir le message
    Je me posais aussi cette question... dans le cas du fichier HTML généré par Open Office, il doit bien y avoir un fichier de style ou bien des données écrites dans le bloc <head></head> entre des balises <style></style>, non ?
    Oui.

    Je ne vous avais pas tout fourni, mais voilà le début du fichier qu'ils produisent :

    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html
      PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN" "http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
     
    [...] Balises méta et link en tous genres [...]
     
    <base href="."/>
    <style type="text/css">
    	@page { size: 20.999cm 29.699cm; margin-top: 2cm; margin-bottom: 2cm; margin-left: 2cm; margin-right: 2cm }
    	table { border-collapse:collapse; border-spacing:0; empty-cells:show }
    	td, th { vertical-align:top; font-size:12pt;}
    	h1, h2, h3, h4, h5, h6 { clear:both }
    	ol, ul { margin:0; padding:0;}
    	li { list-style: none; margin:0; padding:0;}
    	li span.odfLiEnd { clear: both; line-height:0; width:0; height:0; margin:0; padding:0; }
    	span.footnodeNumber { padding-right:1em; }
    	* { margin:0; }
    	.fr1 { font-size:12pt; text-align:center; vertical-align:top; }
    	.P1 { font-size:16pt; font-family:Times New Roman; text-align:center ! important; }
    	.P2 { font-size:12pt; font-family:Times New Roman; text-align:left ! important; }
    	.P3 { font-size:14pt; font-family:Times New Roman; text-align:left ! important; }
    	.T1 { font-style:italic; }
    	.T2 { font-weight:bold; }
    	<!-- ODF styles with no properties representable as CSS -->
    Une page web complète dans un seul fichier html, quoi.

    Et du coup, imaginons que la police change d'un fichier à l'autre, et le nom de la class n'est plus le même.

    Sur des fichiers de dizaines de pages, bonjour le nombre de class...

  8. #8
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Citation Envoyé par fuyo2004 Voir le message
    c'est juste parce que mes documents sont au format .odt à la base, mais textread n'accepte pas ces formats je crois.
    J'avais mal lu cette phrase... il me semble que tu cherches à lire tes fichiers OpenOffice odt directement dans MATLAB pour ensuite les convertir en HTML "simplifié"... c'est ça ?

    Si c'est bien le cas, tu devrais essayer une des toolbox XML sur le fichier odt => Gestion des fichiers XML avec la XML toolbox

  9. #9
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 134
    Par défaut
    Pour éclaircir le sujet, quelques précisions :

    - mes fichiers sont bien en format .odt à la base, c'est pourquoi je m'intéressais également aux fichiers .xml d'open office et à sa conversion automatique en html.

    - comme je pensais que matlab ne pouvait pas lire un fichier .odt, j'aurais pu copier/coller mon .odt dans un .txt pour ensuite faire l'analyse.

    Mais je commence à y voir plus clair.

    Si je récapitule :

    - si j'utilise la toolbox xml, il me suffirait après avoir chargé mon fichier.xml de changer le nom des colonnes de ma structure. Par exemple, la colonne deviendrait - si j'utilise le fichier.html, mais il faut que je puisse le charger sous matlab, il faudrait rechercher une chaîne de caractères (ex "<p class="P3">") et la remplacer (par "<p>"). Y-a-t-il une fonction matlab pour ça (qui ferait le même boulot que "Trouver/Remplacer par" présent dans tous les éditeurs de texte).

    - si j'utilise un fichier .txt, pour répondre à Dut, je ferai en sorte qu'il se présente de cette façon :

    Ceci est un titre

    Ceci est un paragraphe
    Suite du paragraphe.
    Suite du paragraphe.
    (c'est à dire avec une ligne vide entre chaque partie), de façon à pouvoir utiliser la méthode expliquée dans mon deuxième post. La différence entre
    le titre et le paragraphe, c'est que le titre est entouré de deux lignes vides, tandis qu'aucune des lignes du paragraphe ne l'est.

    Les deux premières méthodes seraient à privilégier pour moi, car elles permettent de détecter et conserver la police en gras et en italique dans le texte.

  10. #10
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Citation Envoyé par fuyo2004 Voir le message
    Les deux premières méthodes seraient à privilégier pour moi, car elles permettent de détecter et conserver la police en gras et en italique dans le texte.
    Ben pour l'instant, j'ai une solution pour la troisième

    Soit le fichier text suivant :
    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
    Titre 1
     
    ezfqsffqef
    eFfeqffezfezfzsq
    zefzEFZEF
    EZFzefzefEFEF
    EFZFEFFEZFEEFERF,UIKFYHZSRT
    GESRGTYJUUIK
     
    Titre 2
     
    eqsgtbdtyhyshqergryjlugjksrhwtf
    srtrsthtyjgnh
    rhfgb
     
    erfeqsrf
    qerfsrf
    reqgerg
    reqg
    qerg
     
    Titre 3
     
    reqgdtyghn
    regdfg
    regtyghnh
    xbwf
     
    qrg
    qrgqerg
     
    qergqerg
    qergqrgyj;ji;
    Le code ci-dessous :
    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
    % Lecture du fichier ligne par ligne
    X = textread('test.txt','%s','delimiter','\n');
     
    % Recherche des indices des lignes vides
    idx = find(cellfun('isempty',X));
     
    % On modifie chaque ligne precedant ou suivant une ligne vide en ajoutant
    % soit <p> soit </p>
    for n=1:numel(idx)
        X{idx(n)-1} = sprintf('%s</p>',X{idx(n)-1}); 
        X{idx(n)+1} = sprintf('<p>%s',X{idx(n)+1}); 
    end
     
    % Cas particulier du premier titre
    X{1} = ['<h1>' X{1}];
    % Cas particulier du dernier paragraphe
    X{end} = [X{end} '</p>'];
     
    % Recherche a nouveau des indices des lignes vides
    idx = [1 ; cellfun('isempty',X)];
     
    % On detecte les lignes encadrees par deux lignes vides
    idx = strfind(idx.',[1 0 1]);
     
    % On modifie les lignes correspondante aux titres
    for n=1:numel(idx)
       X{idx(n)} = strrep(X{idx(n)},'<p>','<h1>'); 
       X{idx(n)} = strrep(X{idx(n)},'</p>','</h1>');
    end
     
    % Ecriture du fichier final HTML en mode binaire (plus rapide)
    fid = fopen('test.html','w');
        fwrite(fid,'<html><head></head><body>');
        fwrite(fid,[X{:}]);
        fwrite(fid,'</body></html>');
    fclose(fid);
     
    % Verification du resultat
    web test.html -browser
    donne le fichier HTML suivant :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <html><head></head><body><h1>Titre 1</h1><p>ezfqsffqefeFfeqffezfezfzsqzefzEFZEFEZFzefzefEFEFEFZFEFFEZFEEFERF,UIKFYHZSRTGESRGTYJUUIK</p><h1>Titre 2</h1><p>eqsgtbdtyhyshqergryjlugjksrhwtfsrtrsthtyjgnhrhfgb</p><p>erfeqsrfqerfsrfreqgergreqgqerg</p><h1>Titre 3</h1><p>reqgdtyghnregdfgregtyghnhxbwf</p><p>qrgqrgqerg</p><p>qergqergqergqrgyj;ji;</p></body></html>

    C'est l'idée...

Discussions similaires

  1. [XML] [Débutant]Comment ajouter des balise html dans un fichier XML
    Par pierrot10 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 18/09/2010, 14h36
  2. Ajout des balises html
    Par Gwenc dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 01/05/2010, 22h49
  3. Réponses: 9
    Dernier message: 18/05/2009, 08h25
  4. Insérer des balises html dans un fichier xml
    Par Abac_Angelique dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 29/04/2009, 17h41
  5. [VB.NET] ecrire dans un fichier des balise HTML et autres
    Par mael94420 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 28/03/2007, 13h34

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