1

我需要发送包含以下元素的 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”,它没有命名空间URI?

4

1 回答 1

0

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

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

你的前缀a和都绑定到元素c范围内的非空命名空间。filters

所以你实际上应该这样做:

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

我认为您应该能够使用 映射到空名称空间namespaceURI: '',但是如果我没看错的话,这不是您所需要的。

于 2017-07-07T06:21:05.023 回答