jsonix - 如何使用前缀和没有命名空间创建元素?

时间:2017-07-06 12:08:52

标签: namespaces prefix jsonix

我需要发送包含以下元素的XML:

<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>

我很难使用Jsonix形成“c:condition”和“a:condition”Qname。两个Qname都包含一个前缀,但没有命名空间。

我目前的代码是:

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

这将产生以下结果:

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

任何人都知道如何使用Jsonix生成所需的Qname - 没有namespaceURI的“c:condition”?

1 个答案:

答案 0 :(得分:0)

在您的示例中,前缀c实际上绑定到此行中的命名空间http://some.com/xsd/complexCondition

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

前缀ac都绑定到filters元素范围内的非空名称空间。

所以你应该这样做:

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

我认为您应该可以使用namespaceURI: ''映射到空命名空间,但如果我看到的话,这不是您需要的。