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

VB.NET Discussion :

Extraire une partie d'un fichier XML


Sujet :

VB.NET

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 156
    Points : 59
    Points
    59
    Par défaut Extraire une partie d'un fichier XML
    Bonjour,

    J'ai une requête XML en input de ce genre :

    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
    <?xml version="1.0" encoding="utf-8"?>
    <test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Version="H003" Revision="1" xmlns="http://www.test.org/H003">
      <header authenticate="true">
        <static>
          <Product>LOG</Product>
          <OrgPubKeyDigests>
            <Authentication Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" Version="X002">P6dCnpOCWpD9+aujKIn8Mlzk+xWzuQlkuTftvauiVKY=</Authentication>
            <Encryption Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" Version="E002">lDHHo2sc9iJ1c/bv/6xYGtwe4CtdmeFldrnDD1vBDFk=</Encryption>
          </OrgPubKeyDigests>
          <SecurityMedium>0000</SecurityMedium>
        </static>
        </header>
      <AuthSignature>
        <ds:SignedInfo>
          <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
          <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
          <ds:Reference URI="#xpointer(//*[@authenticate='true'])">
            <ds:Transforms>
              <ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
            </ds:Transforms>
            <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
    <ds:DigestValue>QNUFDmkcNYGQFUTfVKctmA6SNv6qg63cxQBdoGKRmzw=</ds:DigestValue>
          </ds:Reference>
        </ds:SignedInfo>
    <ds:SignatureValue>V1DWMTo34/LNJ7vwUd8C88ghGn/A/qQmCf/SBqy7Ph4xJRcgx4UB1OaXHaEafhmWVcMeOdEm16UZ2mc/hn7cFzn3PAwESVAVaaPJLr1/LX9BPb5MeNpotrWd2/SiW+kJx+Cj0Z8lZtXmEzQ047pVnM8ju3fM4yLUr0EoW+zDk3egrWD3TApgKKNsMJynF8NQKnAAEBvnTPonVjZLCJArAPtBOiZFikBe/a8U5QJvv7/AKwuGJ90m2U9WnRyu4Mf2NFFuZjcNunZzASK8N7g2oVyExOkKm+oL0PeqThtpvyO0+usE+vANb2AXghKXLn/sdvpHvDtwogqus+6Vd4r36g==</ds:SignatureValue>
      </AuthSignature>
      <body>
        <DataTransfer>
          <DataEncryptionInfo authenticate="true">
            <EncryptionPubKeyDigest Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" Version="E002">lDHHo2sc9iJ1c/bv/6xYGtwe4CtdmeFldrnDD1vBDFk=</EncryptionPubKeyDigest>
    <TransactionKey>Ky0dXe4PvIJDvbMLD54mokMyuGN6UIpq4T/iobp+HmAQChoTvR0AEplk1j2yURgXG5FzmsqGK0FYKg/CuTAQsBZCIm+9taYD71SHdD+WolEVizEbdKpTFTLAnStS5numUOhasEPxeyFlsWtCywwGYC0b0i5sQwtx+TjM3WnyKfwmXbVzRX0NqZQaKVT/efiwRsN/agWVvzEi7965V4Unxdc69C0DenJmdOxL6SSUoPQz9/LYL+w1cP/yC+ffJcI0lWfTkHD8n6/Guh2OIW8WQBod3ry1flheRBK3N4p80q9h8oNwMeWW8gbJ8DxKm2cwQESoLzLUKhgeLrGjjupj5w==</TransactionKey>
          </DataEncryptionInfo>
          <SignatureData authenticate="true">qBxDgSjnGIY3cPJVYkDbWQlZ8kWhwjHcB21JWkFHcSvAyNKXgwFrDl5iNzScrZNw0AUgTKN/ChECjgmciB8PFJ+lejKuRCsujOSPnvUMQYN3oUKc57cV5eWLNW4X5R3o7oTLPbmlDy5rNvFA/K5J6qTOfysG6rxDHtt6+vnpXcKqb8x5Xt3+baOEIgigspFxA0tZP4YBRQ/m0oz71l4+biDYBvvLH0PzwrrL4l/HckcnyxzUT+cMyWhSEIIR+fzhpI4loZjGoTf/plKAo7BlDMB65aXCFX4eD6LOj6UeUF0SwOzW9WTBuTHZkupPQBW8t1HSekXNxIrTAukmkoUYxprNdid9+/eRZaThyYruCV5nuE9tF7w3vVY5CHe9Do+oguz2sDe7KUWBxhjFKMqvdmM/GtZHXSc7XPaKsYjwKBqEuoangWULJ7maq3x7ifpZa87gjBmCjPbWaQ2fhDJDPd/kWzneAAYj5uT8wxwXxA8tKoK7LSV1v+wbmGu/QGCXtkRhM5RVZR7FUqF+h9lcG5ke2u2gWL4Z0a16FKSQWKl7ykQ25HfUwK79vNtS2Zl9dei6zyUyR2lmUPOayTbe5uH+ZzHOIlikCOykDr4dhwNAsk8360ZdaJ4LrGmrvMlsblbq5ViVkQe829rfXO5YR2iHpNUle67Vzh3bm4FxNEo=</SignatureData>
        </DataTransfer>
      </body>
    </test>
    Et je dois la canoniser de manière à ne récupérer que la partie SignedInfo (ou d'autres parties de la requête, par exemple uniquement celles qui ont le tag "Authenticate=true". Exemple de résultat de canonisation par SignedInfo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <ds:SignedInfo xmlns="http://www.org/H003" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
          <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:CanonicalizationMethod>
          <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"></ds:SignatureMethod>
          <ds:Reference URI="#xpointer(//*[@authenticate='true'])">
            <ds:Transforms>
              <ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:Transform>
            </ds:Transforms>
            <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></ds:DigestMethod>
          <ds:DigestValue>QNUFDmkcNYGQFUTfVKctmA6SNv6qg63cxQBdoGKRmzw=</ds:DigestValue>
          </ds:Reference>
        </ds:SignedInfo>
    J'ai vu qu'une classe permet de le faire : XmlDsigExcC14NTransformUrl mais je ne sais pas comment m'en servir. J'ai vu les exemples sur MSDN mais pour chacun de ces exemples on ne part pas d'une string XML au départ. Avez-vous une idée de comment canoniser une telle requête XML en .NET ?

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Déjà je ne pense pas que le terme "canoniser" soit adéquat ici

    Et au final, ton résultat est juste l'élément <ds:SignedInfo> du XML de départ, non ? Donc il suffit d'extraire cet élément, je ne vois pas le rapport avec la "canonisation"...

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Dim doc As XDocument = XDocument.Load(fileName)
        Dim defaultNs As XNamespace = "http://www.test.org/H003"
        Dim ds As XNamespace = "http://www.w3.org/2000/09/xmldsig#"
        Dim signedInfo As XElement = doc.Root.Element(defaultNs + "AuthSignature").Element(ds + "SignedInfo")

    La variable signedInfo contient le résultat, tu n'a plus qu'à l'enregistrer dans un fichier ou un Stream avec la méthode Save.

  3. #3
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 156
    Points : 59
    Points
    59
    Par défaut
    Rebonjour,

    Merci pour ta réponse rapide ! Effectivement, canonisation n'est pas du tout le terme adéquat, je m'en suis rendu compte maintenant ... il s'agit simplement de ne récupérer que les portions intéressantes du fichier XML de départ.

    J'ai noté que XDocument est une classe dérivée du framework 3.5 ou supérieur, malheureusement, pour des raisons techniques, je ne peux pas me servir d'une version supérieure au Framework 2.0 !

    Je vais me pencher sur l'utilisation de XMLReader comme indiqué ici http://msdn.microsoft.com/fr-fr/libr...(v=VS.80).aspx

    Pour voir si je peux trouver mon bonheur !

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Le plus proche de XDocument en 2.0, ce serait plutôt XmlDocument. Ce sera beaucoup plus facile à utiliser que XmlReader dans ton scénario

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Déjà je ne pense pas que le terme "canoniser" soit adéquat ici .
    Verbe issu de la francisation du mot "canonize" en anglais => mettre dans la forme canonique. C'est adéquat.

    Rien à voir avec "Sainte Requête priez pour nous"

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Verbe issu de la francisation du mot "canonize" en anglais => mettre dans la forme canonique. C'est adéquat.
    "canonize" signifie soit la même chose qu'en français (rendre quelqu'un saint), soit établir quelque chose comme étant une règle, une référence (un canon). Mettre dans la forme canonique, ça se dit "canonicalize", et je ne crois pas qu'il y ait d'équivalent en français ("normaliser" peut-être, mais ça ne veut pas dire exactement la même chose...)

    @Thordax, désolé de polluer ton thread avec cette petite parenthèse linguistique ^^

  7. #7
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 156
    Points : 59
    Points
    59
    Par défaut
    Aucun problème Et merci pour l'info sur le XmlDocument, je regarde ça !

  8. #8
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 156
    Points : 59
    Points
    59
    Par défaut
    Bon, j'arrive à un truc pas mal mais il faut que je formate ma chaine précisément et il y a deux choses encore que je ne sais pas faire correctement :

    Voici ma portion de 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
    Sub Main()
            Dim objXML As New XmlDocument
            objXML.Load("D:/requete_input.xml")
            Dim strRetour As String = String.Empty
            Dim Nodes As XmlNodeList = objXML.SelectNodes("//*[name()='ds:SignedInfo']")
     
            For Each node As XmlNode In Nodes
     
                ' 1/ Ajout des attributs à l'entête du SignedInfo
                Dim XmlAttr As System.Xml.XmlAttribute = objXML.CreateAttribute("xmlns")
                XmlAttr.Value = "http://www.org/H003"
                node.Attributes.Append(XmlAttr)
                XmlAttr = objXML.CreateAttribute("xmlns:ds")
                XmlAttr.Value = "http://www.w3.org/2000/09/xmldsig#"
                node.Attributes.Append(XmlAttr)
                XmlAttr = objXML.CreateAttribute("xmlns:xsi")
                XmlAttr.Value = "http://www.w3.org/2001/XMLSchema-instance"
                node.Attributes.Append(XmlAttr)
                strRetour += node.OuterXml
     
            Next
     
            Dim SR As New StreamWriter("D:/requete_output_SignedInfo.xml", False)
            SR.Write(strRetour)
            SR.Close()
     
        End Sub
    J'obtiens un résultat presque bon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <ds:SignedInfo xmlns="http://www.org/H003" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /><ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" /><ds:Reference URI="#xpointer(//*[@authenticate='true'])"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /><ds:DigestValue>QNUFDmkcNYGQFUTfVKctmA6SNv6qg63cxQBdoGKRmzw=</ds:DigestValue></ds:Reference></ds:SignedInfo>
    Mais :

    - Il faudrait que ma requête d'output conserve l'indendation de ma requête d'input ! (or le outerXml me vire tous les retours chariot intermédiaires et les espaces également)

    - Pour une raison de formatage de requête, il faut que je fasse apparaître les "closing tags". Exemple :

    Au lieu d'avoir ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
    Je devrais avoir cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:Transform>
    Donc je dois faire apparaître dans mon résultat "</ds:Transform>" au lieu du /> qui vient automatiquement fermer la balise sans faire apparaître le tag fermant.

    Vous savez si XmlDocument est capable de proposer ce genre d'option ? Je regarde sur le net en ce moment même pour voir...

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Thordax Voir le message
    - Il faudrait que ma requête d'output conserve l'indendation de ma requête d'input ! (or le outerXml me vire tous les retours chariot intermédiaires et les espaces également)

    - Pour une raison de formatage de requête, il faut que je fasse apparaître les "closing tags". Exemple :

    Au lieu d'avoir ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
    Je devrais avoir cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:Transform>
    Donc je dois faire apparaître dans mon résultat "</ds:Transform>" au lieu du /> qui vient automatiquement fermer la balise sans faire apparaître le tag fermant.
    Euh... pourquoi tu veux ça au juste ? C'est du XML, les espaces n'ont aucune importance, pas plus que le fait que le tag fermant soit fusionné avec le tag ouvrant ou non.

    Si tu tiens à rétablir l'indentation, tu peux faire quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    XmlWriterSettings settings = new XmlWriterSettings();
    settings.Indent = true;
    using (XmlWriter writer = XmlWriter.Create("D:/requete_output_SignedInfo.xml", settings))
    {
        node.WriteTo(writer);
    }
    Par contre pour séparer les tags ouvrant et fermant, c'est une question que j'ai vue plusieurs fois, mais sans jamais trouver une solution... Ce n'est tout simplement pas prévu, parce que ça n'a aucune importance : le document reste sémantiquement identique, quelle que soit la forme utilisée

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    En fait il y aurait une solution, mais c'est un peu moche : mettre un espace dans le InnerText de l'élément Transform. Evidemment le résultat ne sera pas strictement identique puisqu'il y aura un espace en plus, mais tu auras bien un tag fermant séparé du tag ouvrant

  11. #11
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 156
    Points : 59
    Points
    59
    Par défaut
    Merci pour ta réponse tomlev. C'est effectivement intéressant, comme technique d'indentation, c'est propre et pas besoin de boucle particulière.

    Concernant la nécessité de voir apparaître les tags fermant, c'est parce que cet élément XML est hashé puis signé par la suite via une norme bien spécifique. Le hash est complètement modifié dès lors que la chaîne de départ diffère d'un bit. Et en l'occurence l'absence de tag fermant modifie complètement le hash résultant.

    Je peux éventuellement "bidouiller" comme tu l'as expliqué en rajoutant un espace, ça me parait pas mal. Ensuite je n'ai qu'à faire un Replace de chaque chaine "> <" en "><" pour supprimer l'espace ajouté artificiellement.

  12. #12
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par Thordax Voir le message
    Le hash est complètement modifié dès lors que la chaîne de départ diffère d'un bit. .
    C'est un des deux principes de base d'une fonction de hash quelle qu'elle soit : offrir une grande dispersion. (le deuxième étant de minimiser la probabilité de collision).

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  13. #13
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Thordax Voir le message
    Concernant la nécessité de voir apparaître les tags fermant, c'est parce que cet élément XML est hashé puis signé par la suite via une norme bien spécifique. Le hash est complètement modifié dès lors que la chaîne de départ diffère d'un bit. Et en l'occurence l'absence de tag fermant modifie complètement le hash résultant.
    C'est pas une très bonne idée de s'être basé sur le XML pour générer le hash
    Il aurait mieux valu hasher le contenu, les valeurs des clés, n'importe quoi mais pas le XML...

  14. #14
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 156
    Points : 59
    Points
    59
    Par défaut
    Malheureusement je n'ai pas le choix sur la méthode de conception, c'est la norme de canonisation c14n 20010315 qui l'impose ! Merci en tout cas.

Discussions similaires

  1. comment recuperer une partie d'un fichier XML
    Par ryoussef19 dans le forum Visual C++
    Réponses: 2
    Dernier message: 10/07/2007, 17h02
  2. extraire une partie d'un fichier texte
    Par Mydriaze dans le forum Langage
    Réponses: 5
    Dernier message: 15/06/2007, 12h46
  3. extraire une balise d'un fichier xml
    Par sokles dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 14/05/2007, 15h45
  4. [XSL] Récupérer une partie d'un fichier XML
    Par DoDoP dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 24/04/2007, 18h40
  5. Awk extraire une partie d'un fichier
    Par titexe dans le forum Linux
    Réponses: 2
    Dernier message: 30/11/2006, 11h54

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