首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找不到元素'OFX‘的声明

找不到元素'OFX‘的声明
EN

Stack Overflow用户
提问于 2015-03-06 16:27:03
回答 1查看 192关注 0票数 0

我已经检查了类似的问题,但它们都不能解决我的问题。我正在用OFX模式验证我的xml字符串。以下是模式OFX.xsd

我的xml字符串是

代码语言:javascript
复制
<?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>

我用来验证xml的Java代码是

代码语言:javascript
复制
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("OFX.xsd");
        Source ofxsource = new StreamSource(new StringReader(output));
        SchemaFactory schemaFactory = SchemaFactory
            .newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
        Schema schema = schemaFactory.newSchema(new StreamSource(in));
        Validator validator = schema.newValidator();
        try {
          validator.validate(ofxsource);
          System.out.println("Source is valid");
        } catch (SAXException e) {
          System.out.println("Source is NOT valid");
          System.out.println("Reason: " + e.getLocalizedMessage());
        }
        catch (IOException e) {
            // TODO Auto-generated catch block
            System.out.println("IOException "+ e.getLocalizedMessage());
        }

我没有得到任何错误,但它没有验证xml,并且我得到的消息是“无法找到元素‘OFX’的声明”。如果有人解决了这个关于OFX验证的问题,那么请分享解决方案。

EN

回答 1

Stack Overflow用户

发布于 2015-03-06 16:47:52

您尚未在OLX.xsd中定义根元素

<xs:complexType name="OLX" >修改为<xs:complexType>,并使用元素标记对其进行包装

代码语言:javascript
复制
<xs:element name="OFX">
    <xs:complexType>
        <xs:choice>
            <xs:element name="SIGNONMSGSRQV1" type="SIGNONMSGSRQV1" minOccurs="0" maxOccurs="1"/>
            <xs:element name="SIGNONMSGSRSV1" type="SIGNONMSGSRSV1" minOccurs="0" maxOccurs="1"/>
            <xs:element name="SIGNUPMSGSRQV1" type="SIGNUPMSGSRQV1" minOccurs="0" maxOccurs="1"/>
            <xs:element name="SIGNUPMSGSRSV1" type="SIGNUPMSGSRSV1" minOccurs="0" maxOccurs="1"/>
            <xs:element name="BANKMSGSRQV1" type="BANKMSGSRQV1" minOccurs="0" maxOccurs="1"/>
            <xs:element name="BANKMSGSRSV1" type="BANKMSGSRSV1" minOccurs="0" maxOccurs="1"/>
            <xs:element name="CREDITCARDMSGSRQV1" type="CREDITCARDMSGSRQV1" minOccurs="0" maxOccurs="1"/>
            <xs:element name="CREDITCARDMSGSRSV1" type="CREDITCARDMSGSRSV1" minOccurs="0" maxOccurs="1"/>
            <xs:element name="LOANMSGSRQV1" type="LOANMSGSRQV1" minOccurs="0" maxOccurs="1"/>
            <xs:element name="LOANMSGSRSV1" type="LOANMSGSRSV1" minOccurs="0" maxOccurs="1"/>
            <xs:element name="INVSTMTMSGSRQV1" type="INVSTMTMSGSRQV1" minOccurs="0" maxOccurs="1"/>
            <xs:element name="INVSTMTMSGSRSV1" type="INVSTMTMSGSRSV1" minOccurs="0" maxOccurs="1"/>
            <xs:element name="SECLISTMSGSRSV1" type="SECLISTMSGSRSV1" minOccurs="0" maxOccurs="1"/>
        </xs:choice>
    </xs:complexType>
</xs:element>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28894810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档