SOAP-ответ против XSD с получением org.xml.sax.SAXParseException - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь проверить ответ мыла на файл схемы xsd, используя java.но во время работы я получаю исключение ниже

org.xml.sax.SAXParseException: src-resol: не удается разрешить имя 'xh: ResponseHeader' в (n) компонент "определение типа"

Проблема здесь есть.В моем XSD-файле я вызываю некоторые другие файлы, используя относительный путь.Я сомневаюсь, что мой код не может прочитать эти файлы.но тот же код работает в SOAPUI.

XSD;

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<xsd:import namespace="http://response.header.emtservice.acxsys.com/ws/schema/3/4/1" schemaLocation="../ResponseHeader.xsd" /> 
<xsd:import namespace="http://common.emtservice.acxsys.com/ws/schema/3/4/1" schemaLocation="../Elements.xsd" />

<xsd:element name="SendTransferResponse">
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element name="responseHeader" type="xh:ResponseHeader" />
            <xsd:element name="transferReferenceNumber" type="t:transferreferencenumber" />
            <xsd:element name="fraudCheckResult" type="t:FraudCheckResult" />
        </xsd:sequence>
    </xsd:complexType>
</xsd:element>

Код Java

          SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);

          FileInputStream fileInputStream = new FileInputStream(new File("Response.xsd"));  

          Schema schema = factory.newSchema(new StreamSource(fileInputStream));  


          Validator val = schema.newValidator(); 

          val.validate(new StreamSource(soapResponse));

Спасибо

1 Ответ

0 голосов
/ 20 сентября 2018

Код ниже работает нормально

    SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
    Schema schema = factory.newSchema(new File("Response.xsd"));

    Validator val = schema.newValidator();

    // create a source from a string
    Source source = new StreamSource(new StringReader(response));

    // check input
    boolean isValid = true;
    try {

        val.validate(source);
    } catch (SAXException e) {

        System.err.println(e);
        System.err.println("Not valid");
        isValid = false;
    }

    return isValid;

}
...