2017-07-06 2 views
1

Je suis tenu de envoyer un XML avec les éléments suivants:jsonix - Comment créer un élément avec préfixe et sans espace de nom?

<return> 
    <getrooms>true</getrooms> 
    <filters xmlns:a="http://some.com/xsd/atomicCondition" xmlns:c="http://some.com/xsd/complexCondition"> 
     <city></city> 
     <country></country> 
     <c:condition> 
      <a:condition> 
       <fieldname>fieldName</fieldname> 
       <fieldtest>fieldTest</fieldtest> 
       <fieldvalues> 
        <fieldvalue>fieldValue</fieldvalue> 
       </fieldvalues> 
      </a:condition> 
      <operator>operator</operator> 
      <a:condition> 
       <fieldname>fieldName</fieldname> 
       <fieldtest>fieldTest</fieldtest> 
       <fieldvalues> 
        <fieldvalue>fieldValue</fieldvalue> 
       </fieldvalues> 
      </a:condition> 
     </c:condition> 
    </filters> 
    <resultsperpage></resultsperpage> 
    <page></page> 
</return> 

Je vais avoir du mal à former le "c: condition" et "a: état" Qname en utilisant Jsonix. Les deux Qname contient un préfixe, mais n'ont pas l'espace de noms.

Mon code actuel est:

{ 
    type: 'element', 
    name: 'ccondition', 
    elementName: { 
     localPart: 'condition', 
     prefix: 'c', 
     namespaceURI: 'c' 
    }, 
    typeInfo: 'DOXML.ComplexCondition' 
}, 

Cela se traduira par les éléments suivants:

<c:condition xmlns:c="c">

Tout le monde sait comment utiliser Jsonix pour générer le nécessaire Qname - "c: condition" que est sans le namespaceURI?

Répondre

0

Dans votre exemple, le préfixe c est en fait lié à l'espace de noms http://some.com/xsd/complexCondition dans cette ligne:

<filters xmlns:a="http://some.com/xsd/atomicCondition" xmlns:c="http://some.com/xsd/complexCondition">

deux vous PRFIXES a und c sont liés à namespaces non vides dans le cadre de la filters élément.

Alors vous devriez vraiment faire:

{ type: 'element', name: 'ccondition', elementName: { localPart: 'condition', prefix: 'c', namespaceURI: 'http://some.com/xsd/complexCondition' }, typeInfo: 'DOXML.ComplexCondition' }

Je pense que vous devriez être en mesure de cartographier à l'espace vide avec namespaceURI: '', mais ce n'est pas ce que vous avez besoin dans votre cas, si je vois correctement .

+0

Salut lexicore! Yup, qui se termine toujours par '', ne correspond toujours pas au format XML comme indiqué ci-dessus. Celui attendu est ''. – codingKit

+0

Vous semblez avoir ignoré la partie de ma réponse où j'ai dit que vous avez réellement 'xmlns: c =" http://some.com/xsd/complexCondition "' ici. Vous devriez donc utiliser 'namespaceURI: 'http: // some.com/xsd/complexCondition''. – lexicore

+0

Bonjour @lexicore Je ne comprends pas ce que vous voulez dire en utilisant 'namespaceURI: 'http: // some.com/xsd/complexCondition'' et en le mappant avec' namespaceURI:' ''. Suite à la ci-dessous '{ de type: 'élément', nom : 'cCondition', elementName: { LocalPart: 'condition', préfixe : 'c', namespaceURI: « http://some.com/xsd/complexCondition » }, TYPEINFO: 'DOXML.ComplexCondition' }' Le résultat sera '' – codingKit