Парсинг SOAP Api-ответа - PullRequest
       2

Парсинг SOAP Api-ответа

0 голосов
/ 24 сентября 2019

Я получаю следующий xml из ответа.Может кто-нибудь помочь мне с Java-кодом для получения текста: 1. trafficscript 2. NAMAN: 456 3. vservers 4. vservername 3. certmessage

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
               soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
               xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <zeusac:eventOccurred xmlns:zeusac="http://soap.zeus.com/zxtm/1.0/AlertCallback/"
                              xmlns:zeusns="http://soap.zeus.com/zxtm/1.0/">
            <zeusac:zxtm xsi:type="xsd:string">hostname</zeusac:zxtm>
            <zeusac:time xsi:type="xsd:dateTime">2019-09-24T20:42:39Z</zeusac:time>
            <zeusac:severity xsi:type="zeusns:AlertCallback.Severity">INFO</zeusac:severity>
            <zeusac:primary_tag xsi:type="zeusns:AlertCallback.Tag">CustomEvent</zeusac:primary_tag>
            <tags soapenc:arrayType="zeusns:AlertCallback.Tag[0]" xsi:type="soapenc:Array"/>
            <objects soapenc:arrayType="zeusns:AlertCallback.Object[3]" xsi:type="soapenc:Array">
                <Item xsi:type="zeusns:AlertCallback.Object">
                    <type xsi:type="zeusns:AlertCallback.ObjectType">trafficscript</type>
                    <name xsi:type="xsd:string">NAMAN:456</name>
                </Item>
                <Item xsi:type="zeusns:AlertCallback.Object">
                    <type xsi:type="zeusns:AlertCallback.ObjectType">rules</type>
                    <name xsi:type="xsd:string">Request-Naman</name>
                </Item>
                <Item xsi:type="zeusns:AlertCallback.Object">
                    <type xsi:type="zeusns:AlertCallback.ObjectType">vservers</type>
                    <name xsi:type="xsd:string">vservername</name>
                </Item>
            </objects>
            <zeusac:description xsi:type="xsd:string">certmessage
            </zeusac:description>
            <zeusac:additional xsi:type="xsd:string"/>
            <zeusac:event_type xsi:type="xsd:string">Custom events</zeusac:event_type>
        </zeusac:eventOccurred>
    </soap:Body>
</soap:Envelope>

Я попытался с помощью онлайн-генератора xpath, а также попробовал Dom Parser, ноэто не сработало.Я хочу легкий вес и быстрое решение для разбора.Может ли кто-нибудь помочь мне с кодом Java здесь?

Что-то, что я пробовал: 1. Я пытался извлечь NAMAN: 456

//xml Input is the soap response 
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        dbf.setNamespaceAware(true);
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document doc = db.parse(new InputSource(new StringReader(xmlInput)));
        XPath xpath = XPathFactory.newInstance().newXPath();

        String r = "/soap:Envelope[@xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"]/soap:Body/zeusac:eventOccurred[@xmlns:zeusac=\"http://soap.zeus.com/zxtm/1.0/AlertCallback/\"]/objects[@soapenc:arrayType=\"zeusns:AlertCallback.Object[3]\"]/Item[1]/name[@xsi:type=\"xsd:string\"]/text()";
        Node cv2 = (Node) xpath.evaluate(r,
                doc.getDocumentElement(), XPathConstants.NODE);

        System.out.println(" value of this:" + cv2.getNodeValue());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...