jsonix - 如何创建带前缀但不带名称空间的元素?

jsonix - How to create an element with prefix and without namespace?

我需要发送包含以下元素的 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 - "c:condition" 没有 namespaceURI 吗?

在您的示例中,前缀 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: '' 映射到空命名空间,但如果我没看错的话,这不是您所需要的。