当前位置: 首页 > 知识库问答 >
问题:

没有内容的元素类型(长)

史修明
2023-03-14

我的模式是:

 <xsd:element name="SetMonitor">
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element name="period" type="xsd:long" />
            <xsd:element name="refreshrate" type="xsd:long" />
        </xsd:sequence>
    </xsd:complexType>
</xsd:element>

我的xml将是:

案例1。

<SetMonitor
    xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:cb="http://schemas.cordys.com/1.0/coboc">
    <period/>
    <refreshrate/>
</SetMonitor>

或案例2。

 <SetMonitor
        xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/"
        xmlns:cb="http://schemas.cordys.com/1.0/coboc">
        <period>10</period>
        <refreshrate>20</refreshrate>
    </SetMonitor>

对于案例2,没有问题。但对于案例1,我得到了以下错误:

Caused by: org.xml.sax.SAXException: cvc-datatype-valid.1.2.1: '' is not a valid value for 'integer'.
org.xml.sax.SAXParseException; lineNumber: 6; columnNumber: 14; cvc-datatype-valid.1.2.1: '' is not a valid value for 'integer'.

如何修改wsdl,使其同时接受案例1和案例2?请帮忙。

共有1个答案

越琦
2023-03-14

你可以这样做:

    <xsd:element name="SetMonitor">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="period" type="xsd:long"  nillable="true"/>
                <xsd:element name="refreshrate" type="xsd:long" nillable="true"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>

并以这种方式构造带有“空”元素的xml

<SetMonitor xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <period>2147483647</period>
    <refreshrate xsi:nil="true" />
</SetMonitor>

或者你可以使用模式来修改元素的类型,比如

<xsd:element name="period">
    <xsd:simpleType>
        <xsd:restriction base="xsd:string">
            <xsd:pattern value="|([1-9][0-9]*)" />
        </xsd:restriction>
    </xsd:simpleType>
</xsd:element>

(模式的定义必须比我在这个例子中使用的更精确)

另一种可能性是为空字符串定义simpleType

<xsd:simpleType name="emptyString">
    <xsd:restriction base="xsd:string">
        <xsd:length value="0"/>
    </xsd:restriction>
</xsd:simpleType>

然后将元素定义为xsd: long和emptyString类型的联合

<xsd:element name="period">
    <xsd:simpleType>
        <xsd:union memberTypes="xsd:long emptyString"/>
    </xsd:simpleType>
</xsd:element>
 类似资料:
  • 问题内容: 我当前正在使用Java 7,Maven,Spring MVC和Eclipse上的Eclipselink JPA编写Web服务,以访问连接到内部网络的温度/湿度传感器的值。使用curl连接到传感器并检索值没有问题,但是当我尝试使用URLConnection通过java连接时,出现错误。 我的代码: 错误: 不幸的是,我无法控制响应,因此也无法控制设置的标头。此请求返回的唯一标头是状态-2

  • 问题:这是我的XMLfile.on第6行我得到错误“元素类型的内容”属性“必须匹配”(描述?,元*,(bean|ref|idref|value|null|list|set|map|props)?)".".

  • 我需要从这个xsd: 下面是我尝试的XML: 我得到了这个错误: 无效。错误-第10,9行:org.xml.sax.SAXParseException;行号:10;列号:9;cvc-complex-type.2.3:元素“group”不能具有字符[children],因为该类型的内容类型仅为元素。

  • 我试图得到下面给出的带有SpringRest模板的响应实体。我得到了下面的错误, 代码: 我在这篇文章中尝试将媒体类型设置为Application/json。但还是一样的错误。 完整跟踪:

  • 我很难让我的简单mybatis文件正常工作。我有这个文件: 我得到以下异常: 原因:组织。xml。萨克斯。SAXParseException:元素类型“mapper”的内容必须匹配“(cache ref | cache | resultMap*| parameterMap*| sql*| insert*| update*| delete*| select*)”。 这很让人困惑,因为我肯定有一些s在