Как мы создаем универсальный объект, используя JAXB в Java - PullRequest
0 голосов
/ 21 мая 2019

Я хочу отобразить или преобразовать этот xml в объект Java, и я хочу извлечь элемент «body» из XML и сделать его универсальным объектом Java. Я не хочу наносить на карту каждое поле. Я просто хочу полное тело запроса со всеми элементами. Как мне это сделать?

<request>
        <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
            <soap:Header xmlns:dpwsm="http://www.reuqestpower.com/schemas/ryesbs"
                         xmlns:g="http://www.request.com" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
            <k:SoapHeader>
            </k:oapHeader>
        </soap:Header>
        <SOAP-ENV:Body>
            <purchaseOrderRequest xmlns="http://www.somecompany.com/order/PO
        xmlns:addr="http://www.somecomapany.com/order/ADDR>
        <firstname>Fred</firstname>
        <surname>Bloggs</surname>
        <addr:address">
            <addr:addressLine1>2 South Road</addr:address1>
            <addr:addressLine2/>
            <addr:town>Colchester</addr:town>
            <addr:county>Essex</addr:county>
            <addr:postcode>CO8 9SR</addr:postcode>
        </addr:address>
        <telephone>01334 234567</po:telephone>
    </purchaseOrderRequest>
        </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
</request>

Ответы [ 2 ]

0 голосов
/ 21 мая 2019

Если вы можете или хотите использовать стороннюю библиотеку, вы можете использовать Jsoup:

org.jsoup.nodes.Document dom = Jsoup.parse(xml, "", Parser.xmlParser());
Element body = dom.getElementsByTag("SOAP-ENV:Body").get(0);
for(Element child:body.children())
{
    System.out.println(child);
}
0 голосов
/ 21 мая 2019

Вы можете использовать DOM Parser , а затем проверить узлы:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document dom = builder.parse(new InputSource(new StringReader(xml)));
Node body = dom.getDocumentElement().getElementsByTagName("SOAP-ENV:Body").item(0);
for(int i=0;i<body.getChildNodes().getLength();i++)
{
    System.out.println(body.getChildNodes().item(i));
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...