Невозможно обработать XML. Получение Соответствие цели инструкции обработки "[xX] [mM] [lL]" не допускается. org.xml.sax.SAXParseException error - PullRequest
2 голосов
/ 07 апреля 2019

Можете ли вы проверить, что не так с этим XML. Клиент отправляет этот XML-запрос для обработки моего приложения.

<soapenv:Envelope
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:eze="http://ezeepay_test">
    <soapenv:Header/>
    <soapenv:Body>
        <eze:RequestService
 soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
            <InputXml xsi:type="xsd:string">
                <?xml version="1.0"
 encoding="UTF-8"?>
                <Request>
                    <BankID>05</BankID>
                    <TransactionID>1004114741235</TransactionID>
                    <TransactionType>Payment</TransactionType>
                    <ServiceType>Bill</ServiceType>
                    <TransactionDateStamp>04-04-2019 11:43:13</TransactionDateStamp>
                    <Amount>500</Amount>
                    <PaymentType>Cash</PaymentType>
                </Request>
            </InputXml>
        </eze:RequestService>
    </soapenv:Body>
</soapenv:Envelope>

Мне нужно использовать xPath для итерации по узлам для чтения элементов. Но когда я анализирую этот XML, я получаю следующую ошибку.

Я использую DocumentBuilderFactory.

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    dbf.setNamespaceAware(true);
    DocumentBuilder db = dbf.newDocumentBuilder();

//This is where I am getting Error.
    Document doc = db.parse(new InputSource(new StringReader(XMLRequestString)));

Пожалуйста, дайте мне знать, какие манипуляции я могу сделать на своем уровне кода.

1 Ответ

2 голосов
/ 07 апреля 2019

Ответ на этот вопрос заключается в том, что отправленные данные не соответствуют стандартам SOAP и XML, и ваш сервер совершенно прав, чтобы отклонить их. Конкретное правило, которое оно нарушает, состоит в том, что конструкция <?xml....?> может появляться только в начале документа (это было бы объявление XML, если бы оно появилось в начале; это была бы инструкция обработки, если бы она не называлась «xml»). ; как это, это ни то, ни другое).

Не поддавайтесь искушению изменить код своего сервера, чтобы он мог принимать любой мусор, который отправляет вам клиент: это путь к краху.

...