Получить значение из XML-строки Java Spring

Это моя строка XML:

<soapenv:Envelope
   xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/"
   xmlns:xsd = "http://www.w3.org/2001/XMLSchema" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance">
   <soapenv:Body>
      <HostCustomerResponse xmlns = "http://10.25.143.133">
         <ns1:output xmlns:ns1 = "http://10.25.136.152"
            xmlns:ns2 = "java:prismagateway.service.HostCustomer" xsi:type = "ns2:Output">
            <ns2:bankReffNo/>
            <ns2:statusCode>00</ns2:statusCode>
            <ns2:statusMsg/>
            <ns2:txnResponseDateTime>20180917110403</ns2:txnResponseDateTime>
            <ns2:txnData>&lt;balanceResponse&gt;&lt;balance&gt;	&lt;accountNo&gt;800000123800&lt;/accountNo&gt;		&lt;accountCurrency&gt;IDR&lt;/accountCurrency&gt;	&lt;date&gt;20180917&lt;/date&gt;	&lt;ledgerBalance&gt;23842209566.02&lt;/ledgerBalance&gt;	&lt;availableBalance&gt;23257643542.65&lt;/availableBalance&gt;    	&lt;holdAmount&gt;584566023.37&lt;/holdAmount&gt;        	&lt;overdraftLimit&gt;0&lt;/overdraftLimit&gt;        	&lt;/balance&gt;&lt;/balanceResponse&gt;</ns2:txnData>
         </ns1:output>
      </HostCustomerResponse>
   </soapenv:Body>
</soapenv:Envelope>

Как я могу получить значение ns2: statusCode?

Вы можете использовать парсеры Sax, Stax или DOM. Разные парсеры - разные подходы.

kozmo 17.09.2018 06:20

можешь показать мне, как им пользоваться?

Ezra Ricad 17.09.2018 06:22
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
2
112
1

Ответы 1

Если вы хотите использовать Stax-parser, вам нужно сделать что-то вроде этого:

public static void main(String[] args) throws XMLStreamException {
      XMLEventReader xmlEventReader = XMLInputFactory.newInstance().createXMLEventReader(
              Test.class.getResourceAsStream("test.xml")
      );
      while(xmlEventReader.hasNext()) {
        XMLEvent xmlEvent = xmlEventReader.nextEvent();
        if (xmlEvent.isStartElement()){
            if (Objects.equals(xmlEvent.asStartElement().getName().getLocalPart(),"statusCode")) {
                xmlEvent = xmlEventReader.nextEvent();
                if (xmlEvent.isCharacters()) {
                    System.out.println(xmlEvent.asCharacters().getData()); // 00
                }
            }

        }
    }
}

Другие вопросы по теме