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

Format d'échange (XML, JSON...) Java Discussion :

"XML unmarshal error" avec simpleNLG


Sujet :

Format d'échange (XML, JSON...) Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4
    Par défaut "XML unmarshal error" avec simpleNLG
    Bonjour,

    J’essaie de faire de la génération de texte en utilisant simpleNLG en passant par le XMLRealiser, mais j'ai toujours l'erreur suivante: "simplenlg.xmlrealiser.XMLRealiserException: XML unmarshal error"

    Mon fichier XML ressemble à ça:
    <?xml version="1.0" encoding="utf-8"?>
    <Document xmlnssd="http://www.w3.org/2001/XMLSchema" xmlnssi="http://www.w3.org/2001/XMLSchema-instance" cat="PARAGRAPH" xsi:schemaLocation="http://code.google.com/p/simplenlg/schemas/version1" xmlns="http://code.google.com/p/simplenlg/schemas/version1">
    <child xsi:type="SPhraseSpec">
    <subj xsi:type = "NPPhraseSpec">
    <head cat = "NOUN"> i </head>
    </subj>
    <vp xsi:type = "VPPhraseSpec" TENSE="PRESENT">
    <head cat="VERB"> like </head>
    <compl xsi:type = "NPPhraseSpec">
    <head cat="NOUN"> skateboard </head>
    </compl>
    </vp>
    </child>
    </Document>

    Et le bout de code qui plante est le suivant:
    public static simplenlg.xmlrealiser.wrapper.NLGSpec getNLGSpec(Reader xmlReader) throws XMLRealiserException {
    simplenlg.xmlrealiser.wrapper.NLGSpec wt = null;
    try {
    JAXBContext jc = JAXBContext.newInstance(simplenlg.xmlrealiser.wrapper.NLGSpec.class);
    Unmarshaller u = jc.createUnmarshaller();
    Object obj = u.unmarshal(xmlReader); //Ca plante ici...

    if (obj instanceof simplenlg.xmlrealiser.wrapper.NLGSpec) {
    wt = (simplenlg.xmlrealiser.wrapper.NLGSpec) obj;
    }
    }
    catch (Throwable e) {
    throw new XMLRealiserException("XML unmarshal error", e);
    }
    return wt;
    }

    La variable "xmlReader" contient le contenu du fichier XML.

    Contenue de la pile d'execution:
    javax.xml.bind.UnmarshalException: unexpected element (uri:"http://code.google.com/p/simplenlg/schemas/version1", local:"Document"). Expected elements are <{http://simplenlg.googlecode.com/svn/trunk/res/xml}NLGSpec>
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(Unknown Source)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.Loader.reportError(Unknown Source)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.Loader.reportError(Unknown Source)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.Loader.reportUnexpectedChildElement(Unknown Source)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext$DefaultRootLoader.childElement(Unknown Source)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(Unknown Source)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(Unknown Source)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.SAXConnector.startElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(Unknown Source)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(Unknown Source)
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(Unknown Source)
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(Unknown Source)
    at simplenlg.xmlrealiser.UnWrapper.getNLGSpec(UnWrapper.java:87)
    at simplenlg.xmlrealiser.XMLRealiser.getRequest(XMLRealiser.java:200)
    at simplenlg.xmlrealiser.XMLRealiser.main(XMLRealiser.java:106)
    at Main_Test_XMLReliser.main(Main_Test_XMLReliser.java:47)
    simplenlg.xmlrealiser.XMLRealiserException: XML unmarshal error


    Ca fait longtemps que je bloque la dessus donc si quelqu'un a une idée elle est la bienvenue!
    Merci d'avance! :-)

  2. #2
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    Tout d'abord, je ne comprends pas pourquoi le projet laisse, dans son zip à télécharger, une/des article(s) tout à fait datées et montrant des exemples qui ne correspondent plus à ce que le schéma à jour demande.

    L'exemple que vous prenez là n'est pas correcte au moins dans deux aspects.

    Premièrement, le syntax en xsi:schemaLocation est faux, il faut ajouter le lieu qu'on trouve le schéma. Si c'est dans le système fichier local dans la même répertoire que le xml de simpleNLG, il doit s'écrire comme ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xsi:schemaLocation="http://code.google.com/p/simplenlg/schemas/version1 RealizerSchema.xsd"
    Et puis, le schema a changé beaucoup depuis r158, et r197 notamment. Maintenant, la racine se nomme NLGSpec: il prends deux enfants, Request et Recording, l'un ou l'autre. Et puis Document puisse être un grand-enfant de la racine.

    javax.xml.bind.UnmarshalException: unexpected element (uri:"http://code.google.com/p/simplenlg/schemas/version1", local:"Document"). Expected elements are <{http://simplenlg.googlecode.com/svn/trunk/res/xml}NLGSpec>
    Ce message signifie que vous utilisez la version probablement 4xx, ce qui est normal si on cheche à télécharger la bibliothèque depuis peu. Le message se plaint que l'engin anticipe à trouver la racine {http://code.google.com/p/simplenlg/schemas/version1}NLGSpec mais il trouve pourtant {http://code.google.com/p/simplenlg/schemas/version1}Document.

    Je propose que vous travaillez avec v442 et, dans la répertoire res/xml, vous trouveriez exemples de xml. Regardez comment s'écrire les éléments englobantes nlg:NLGSpec et puis nlg:Request ou nls:Recording. Puis, mettez nlg:Document comme enfant. Ce serait une bien plus propre instance de xml pour unmarshalling.

    Voilà !

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/09/2007, 16h57
  2. [VB6>VB.NET] Comment coder "break on all errors"
    Par RiiiDD dans le forum VB.NET
    Réponses: 5
    Dernier message: 07/03/2006, 12h53

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