Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java XML验证:发现以元素开头的无效内容_Java_Xml_Xsd_Xsd Validation_Xml Validation - Fatal编程技术网

Java XML验证:发现以元素开头的无效内容

Java XML验证:发现以元素开头的无效内容,java,xml,xsd,xsd-validation,xml-validation,Java,Xml,Xsd,Xsd Validation,Xml Validation,我面临着这个问题,无法解决它。 我有这个xsd。我想用这个模式验证的xml如下 <?xml version="1.0"?> <OFX> <SIGNONMSGSRSV1> <SONRS> <STATUS> <CODE>0</CODE> <SEVERITY>INFO</SEVERITY&g

我面临着这个问题,无法解决它。 我有这个xsd。我想用这个模式验证的xml如下

<?xml version="1.0"?>
<OFX>
    <SIGNONMSGSRSV1>
        <SONRS>
            <STATUS>
                <CODE>0</CODE>
                <SEVERITY>INFO</SEVERITY>
            </STATUS>
            <DTSERVER>20120716233626.570[-7:PDT]</DTSERVER>
            <LANGUAGE>ENG</LANGUAGE>
            <FI>
                <ORG>Symitar</ORG>
                <FID>01182</FID>
            </FI>
            <INTU.BID>01182</INTU.BID>
            <INTU.USERID>66983</INTU.USERID>
        </SONRS>
    </SIGNONMSGSRSV1>
    <BANKMSGSRSV1>
        <STMTTRNRS>
            <TRNUID>0</TRNUID>
            <STATUS>
                <CODE>0</CODE>
                <SEVERITY>INFO</SEVERITY>
            </STATUS>
            <STMTRS>
                <CURDEF>USD</CURDEF>
                <BANKACCTFROM>
                    <BANKID>
                    </BANKID>
                    <ACCTID>66983-S80</ACCTID>
                    <ACCTTYPE>CHECKING</ACCTTYPE>
                </BANKACCTFROM>
                <BANKTRANLIST>
                    <DTSTART>20120501</DTSTART>
                    <DTEND>20120716</DTEND>
                    <STMTTRN>
                        <TRNTYPE>FEE</TRNTYPE>
                        <DTPOSTED>20120713135400</DTPOSTED>
                        <TRNAMT>-25.00</TRNAMT>
                        <FITID>30403620120713WF</FITID>
                        <NAME>Account Transaction</NAME>
                        <MEMO>Withdrawal Fee</MEMO>
                    </STMTTRN>
                </BANKTRANLIST>
                <LEDGERBAL>
                    <BALAMT>-254.64</BALAMT>
                    <DTASOF>20120716233626</DTASOF>
                </LEDGERBAL>
                <AVAILBAL>
                    <BALAMT>-254.64</BALAMT>
                    <DTASOF>20120716233626</DTASOF>
                </AVAILBAL>
            </STMTRS>
        </STMTTRNRS>
    </BANKMSGSRSV1>
</OFX>
当我试图在线或用java代码验证这个xml时。我得到以下错误

cvc-complex-type.2.4.d: Invalid content was found starting with element 'SEVERITY'
cvc-complex-type.2.4.d: Invalid content was found starting with element 'DTSERVER'
cvc-complex-type.2.4.d: Invalid content was found starting with element 'FID'
and so on....

告诉我xsd中的错误是什么。

您已经声明了所有类似



XML模式选择元素只允许声明中包含的一个元素出现在包含元素中


您可以选择几种类型

<xs:complexType name="SONRS">
        <xs:choice>
            <xs:element name="STATUS" type="STATUS" minOccurs="0"
                maxOccurs="1" />
            <xs:element name="DTSERVER" type="xs:string" minOccurs="0"
                maxOccurs="1" />
            <xs:element name="LANGUAGE" type="xs:string" minOccurs="0"
                maxOccurs="1" />
            <xs:element name="DTPROFUP" type="xs:string" minOccurs="1"
                maxOccurs="1" />
            <xs:element name="DTACCTUP" type="xs:string" minOccurs="0"
                maxOccurs="1" />
            <xs:element name="FI" type="FI" minOccurs="0" maxOccurs="1" />
        </xs:choice>
    </xs:complexType>

地位也是如此。因此,您应该在xml for SONR中只包含一个元素,如果包含STATUS,则您有:

<xs:complexType name="STATUS">
        <xs:choice>
            <xs:element name="CODE" type="xs:integer" minOccurs="0"
                maxOccurs="1" />
            <xs:element name="SEVERITY" type="xs:string" minOccurs="0"
                maxOccurs="1" />
            <xs:element name="MESSAGE" type="xs:string" minOccurs="0"
                maxOccurs="1" />
        </xs:choice>
    </xs:complexType>


因此,您应该包括代码、严重性或消息。

正如我在评论中提到的。
问题在于架构,它定义了元素类型,但架构中没有提到元素,因此解析器抛出了无效内容的错误。

您解决了这个问题吗?如果你已经解决了它,你是怎么做的?是的,我发现我的模式是错误的,它有元素类型,但没有元素本身,就像在模式的第一行中,我之前没有ofx元素,其他元素也没有ofx元素:)你能添加一个答案来解决这个问题吗?
<xs:complexType name="SONRS">
        <xs:choice>
            <xs:element name="STATUS" type="STATUS" minOccurs="0"
                maxOccurs="1" />
            <xs:element name="DTSERVER" type="xs:string" minOccurs="0"
                maxOccurs="1" />
            <xs:element name="LANGUAGE" type="xs:string" minOccurs="0"
                maxOccurs="1" />
            <xs:element name="DTPROFUP" type="xs:string" minOccurs="1"
                maxOccurs="1" />
            <xs:element name="DTACCTUP" type="xs:string" minOccurs="0"
                maxOccurs="1" />
            <xs:element name="FI" type="FI" minOccurs="0" maxOccurs="1" />
        </xs:choice>
    </xs:complexType>
<xs:complexType name="STATUS">
        <xs:choice>
            <xs:element name="CODE" type="xs:integer" minOccurs="0"
                maxOccurs="1" />
            <xs:element name="SEVERITY" type="xs:string" minOccurs="0"
                maxOccurs="1" />
            <xs:element name="MESSAGE" type="xs:string" minOccurs="0"
                maxOccurs="1" />
        </xs:choice>
    </xs:complexType>