简体   繁体   中英

Unable to process XML. Getting The processing instruction target matching "[xX][mM][lL]" is not allowed. org.xml.sax.SAXParseException error

Can you please check what is wrong with this XML. Client is sending this XML request to process my application.

<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>

I need to use xPath to iterate through the nodes to read the elements. But when I am parsing this XML I am getting the following Error.

I am prasing it using 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)));

Please let me know what manipulation I can do at my code Level.

The answer to the question is that the data that has been sent is not compliant with the SOAP and XML standards and your server is quite right to reject it. The specific rule it is breaking is that the construct <?xml....?> can only appear at the start of the document (it would be an XML declaration if it appeared at the start; it would be a processing instruction if it were not named "xml"; as it is, it is neither).

Don't be tempted to change your server code to accept any garbage the client sends you: that is the road to ruin.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM