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

XML/XSL et SOAP Discussion :

problème avec un attribut xml


Sujet :

XML/XSL et SOAP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2010
    Messages : 18
    Par défaut problème avec un attribut xml
    bonjour

    j'au un fichier XML que j'essaie de parser,
    le fichier est généré par Magic Draw et correspond un une spécification d'architecture d'entreprise dont voici la partie qui pose problème (le fichier est volumineux)

    <EV_Profile:EV_Objective xmi:id='_12_0_8d00229_1175673345578_207519_1076' base_Class='_12_0_8d00229_1175673345140_448581_919' description='&lt;html&gt;
    &lt;head&gt;
    &lt;font size=&quot;3&quot;&gt;
    &lt;/font&gt; &lt;/head&gt;
    &lt;body&gt;
    &lt;p&gt;
    &lt;font size=&quot;3&quot;&gt;To allow the use, by authorised borrowers, of the varying
    collection of Library items, as fairly and efficiently as possible.&lt;/font&gt;
    &lt;/p&gt;
    &lt;/body&gt;
    &lt;/html&gt;
    '/>


    le problème se situe plus exactement dans le contenue de l'attribut 'description'

    j'ai écrit cette fonction dont voici le code (fonction de Parsing XML.txt)
    cette fonction récursive me permet de parser le fichier xml et de le tronsformer en chaine de caractère xml (StringXML)

    quand j'essaie de parser le bout de document xml ci-dessus, j'obtiens pas exactement la même chose :


    <EV_Profile:EV_Objective
    xmi:id="_12_0_8d00229_1175673345578_207519_1076"
    base_Class="_12_0_8d00229_1175673345140_448581_919"
    description="<html>
    <head>
    <font size="3">
    </font> </head>
    <body>
    <p>
    <font size="3">To allow the use, by authorised borrowers, of the varying
    collection of Library items, as fairly and efficiently as possible.</font>
    </p>
    </body>
    </html>
    " ></EV_Profile:EV_Objective>

    donc le problème est au niveau de la méthode attribute.getValue()
    qui une fois appliquée sur l'attribut description me retourne non pas


    '&lt;html&gt;
    &lt;head&gt;
    &lt;font size=&quot;3&quot;&gt;
    &lt;/font&gt; &lt;/head&gt;
    &lt;body&gt;
    &lt;p&gt;
    &lt;font size=&quot;3&quot;&gt;To allow the use, by authorised borrowers, of the varying
    collection of Library items, as fairly and efficiently as possible.&lt;/font&gt;
    &lt;/p&gt;
    &lt;/body&gt;
    &lt;/html&gt;
    '

    mais

    <html>
    <head>
    <font size="3">
    </font> </head>
    <body>
    <p>
    <font size="3">To allow the use, by authorised borrowers, of the varying
    collection of Library items, as fairly and efficiently as possible.</font>
    </p>
    </body>
    </html>


    si vous avez une idée que peux m'aider, elle est la bienvenue

    et merci d'avance

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    C'est tout-à-fait normal.

    En XML, < sert à commencer une balise et seulement à ça. Quand il y a besoin de mettre un < dans un text XML, on l'échappe en faisant &lt;

    Autrement dit, le parseur doit remplacer &lt; par <, puisque son rôle est de transformer le fichier XML en l'information qu'il contient.
    De même,
    - &gt; échappe >
    - &quot; échappe "

    Si tu veux réécrire ce fichier XML à l'identique (et tu ne devrais pas t'embarrasser à le faire toi-même, ça s'appelle sérialiser du XML et toutes les bibliothèques XML savent le faire, mais sans erreur, elles,) alors il faut à nouveau remplacer
    - < par &lt;
    - > par &gt;
    - " par &quot;
    Et aussi
    - & par &amp;
    - ' par &apos;

    Remarques importantes cependant :
    - Les caractères peuvent être échappés ne nombreuses autres façons, et après parsing on ne peut pas savoir si ils ont été échappés et si oui, comment. Ça n'a pas d'importance, tous les échappements sont équivalents : ils veulent dire, ici il y a le caractère que je représente.

    - > n'a pas besoin d'être échappé. Un fichier XML peut contenir un > dans le texte. Après parsing, il est impossible de savoir si le fichier original l'avait représenté > ou &gt; ou > ou &#x3E; ou &#x3e; ou autrement.

    - " ne peut pas, pour des raisons évidentes, figurer dans un attribut délimité par des ". Mais il peut figurer partout ailleurs. Après parsing, il est impossible de savoir si le fichier original l'avait représenté " ou &quot; ou " ou &#x22; ou autrement.

    - < doit toujours être échappé, mais après parsing il est impossible de savoir si le fichier original l'avait représenté &lt; ou < ou &#x3C; ou &#x3c; ou autrement.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2010
    Messages : 18
    Par défaut
    d'abord merci bcp thelvin pour votre réponse très concise.

    je suis au courant de la sérialisation/désérialisation dans XML,
    cependant je pensais qu'elle est utiliser pour sérialiser des vrai objet java
    comme les Javabeans, hors dans mon cas, je me suis dis, on est bien dans le cas d'une déserialisation, le fichier XML que je veux désérialiser, c'est pas moi qui l'a sérialisé ? donc je ne sais pas s'il correspond à un Objet.

    et puis j'essaie de utiliser la désérialisation, dont voici le bout de programme :


    private static String kaka(String XMLfile){
    String result="";
    try{
    XMLDecoder decoder=
    new XMLDecoder(new FileInputStream ("specification.xml"));
    result=(String)decoder.readObject();
    }catch (Exception e) {
    e.printStackTrace();
    }
    System.out.println("le fichier de sortie est : "+result);
    return result;
    }

    le fichier d'entrée 'specification.xml' est bien celui que j'ai montionné dans le premier message


    mais il m'affiche l'erreur suivante :

    java.lang.Exception: Unrecognized opening tag: xmi:XMI xmi:version="2.1" xmlns:uml="http://schema.omg.org/spec/UML/2.1.2" xmlnsmi="http://schema.omg.org/spec/XMI/2.1" xmlns:TV_Profile="http://www.magicdraw.com/schemas/TV_Profile.xmi" xmlns:UML_Profile_for_Schedulabilty__Performance_and_Time_Specification="http://www.magicdraw.com/schemas/UML_Profile_for_Schedulabilty__Performance_and_Time_Specification.xmi" xmlns:MagicDraw_Profile="http://www.magicdraw.com/schemas/MagicDraw_Profile.xmi" xmlnsAprofile="http://www.magicdraw.com/schemas/PAprofile.xmi" xmlns:Conformance_Profile="http://www.magicdraw.com/schemas/Conformance_Profile.xmi" xmlns:IV_Profile="http://www.magicdraw.com/schemas/IV_Profile.xmi" xmlns:NV_Profile="http://www.magicdraw.com/schemas/NV_Profile.xmi" xmlnsSL_Customization="http://www.magicdraw.com/schemas/DSL_Customization.xmi" xmlns:CV_Profile="http://www.magicdraw.com/schemas/CV_Profile.xmi" xmlns:SAprofile="http://www.magicdraw.com/schemas/SAprofile.xmi" xmlns:ADprofile="http://www.magicdraw.com/schemas/ADprofile.xmi" xmlns:EV_Profile="http://www.magicdraw.com/schemas/EV_Profile.xmi" xmlns:RSAprofile="http://www.magicdraw.com/schemas/RSAprofile.xmi" xmlns:RTresourceModeling="http://www.magicdraw.com/schemas/RTresourceModeling.xmi" xmlns:UML_Standard_Profile="http://www.magicdraw.com/schemas/UML_Standard_Profile.xmi" xmlns:Correspondence_Profile="http://www.magicdraw.com/schemas/Correspondence_Profile.xmi" xmlns:Validation_Profile="http://www.magicdraw.com/schemas/Validation_Profile.xmi" xmlns:ODP_Profile="http://www.magicdraw.com/schemas/ODP_Profile.xmi"
    Continuing ...
    java.lang.Exception: Unrecognized opening tag: stereotypeApplicationForProxies
    Continuing ...
    java.lang.Exception: Unrecognized opening tag: EV_Profile:EV_Objective xmi:id="_12_0_8d00229_1175673345578_207519_1076" base_Class="_12_0_8d00229_1175673345140_448581_919" description="<html>
    <head>
    <font size="3">
    </font> </head>
    <body>
    <p>
    <font size="3">To allow the use, by authorised borrowers, of the varying
    collection of Library items, as fairly and efficiently as possible.</font>
    </p>
    </body>
    </html>
    "
    Continuing ...
    java.lang.Exception: Unrecognized closing tag: EV_Profile:EV_Objective
    Continuing ...
    java.lang.Exception: Unrecognized closing tag: stereotypeApplicationForProxies
    Continuing ...
    java.lang.Exception: Unrecognized closing tag: xmi:XMI
    Continuing ...
    java.util.NoSuchElementException
    at java.util.Vector.lastElement(Unknown Source)
    at com.sun.beans.ObjectHandler.lastExp(Unknown Source)
    at com.sun.beans.ObjectHandler.dequeueResult(Unknown Source)
    at java.beans.XMLDecoder.readObject(Unknown Source)
    at test8.XmlParser.kaka(XmlParser.java:57)
    at test8.XmlParser.main(XmlParser.java:209)




    est ce que vous pouvez me dire c'est quoi le problème ?

    merci beaucoup

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Serialiser un Objet quelconque dans du XML, et sérialiser une structure DOM dans un fichier XML, n'est pas la même chose. C'est le même nom.

    XMLDecoder/XMLEncoder n'ont rien à voir avec le fait d'écrire une structure DOM quelconque dans un fichier XML. Ils servent à écrire en XML des Objets dont le format a été précisément spécifié.

    Pour écrire une structure JDOM dans un fichier XML, tu as XMLOutputter.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2010
    Messages : 18
    Par défaut
    oui thelvin je comprends parfaitement ce que vous dites
    mais là, le XMLOutputter est pour la sérialisation.
    en plus, vous dites que un objet et Document n'est pas la même chose. certe mais mais dans mon cas aussi, je cherche pas désérialiser mon fichier xml en un Document mais plutôt en une chaine XMLString qui est de type String.

    alors c'est ici que je comprends pas comment vous pouvez procéder ?

    merci d'avance thelvin

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Rien compris, vous mélangez les sens et les notions.

    Vous partez de quoi, vous le transformez en quoi, et vous voulez obtenir quoi à la fin ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] XML avec les attributs
    Par gdiamond dans le forum AJAX
    Réponses: 0
    Dernier message: 28/10/2011, 18h42
  2. [Génération XML en JavaScript] Problème avec l'attribut xmlns
    Par LeHibou dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 11/08/2008, 16h30
  3. [Custom Tags 2.0] Problème avec les attributs
    Par uliss dans le forum Taglibs
    Réponses: 1
    Dernier message: 12/02/2006, 22h31
  4. [FLASH MX2004] Problème avec un datagrid & xml
    Par cedonline dans le forum Flash
    Réponses: 72
    Dernier message: 15/11/2005, 15h21
  5. Problème avec le parser XML
    Par sheura dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 09/11/2005, 18h26

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