Прочитайте Soap Response с пространствами имен в Java 8 - PullRequest
0 голосов
/ 20 февраля 2019

Я хочу прочитать AccountNumber, OrderNumber, responseCode и responseDescription.Я могу прочитать AccountNumber, OrderNumber, используя

public static String getTagContents(String xmlString, String tagName) {
    String resp = "";
    String bTagName = "<" + tagName + ">";
    int stInd = xmlString.indexOf(bTagName);
    int enInd = xmlString.indexOf("</" + tagName + ">");
    if (stInd > -1 && enInd > -1) {
        resp = xmlString.substring(stInd + bTagName.length(), enInd);
    }
    return resp;
}

, то же самое не работает для responseCode и responseDescription

<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing">
   <env:Body>
      <eSAResponse xmlns="http://www.www.someurl.com/ESA">
         <eSAResponseData>
            <AccountNumber>45300895</AccountNumber>
            <OrderNumber />
         </eSAResponseData>
         <commonResponse>
            <responseCode xmlns="http://www.someurl.com">00</responseCode>
            <responseDescription xmlns="http://www.someurl.com/ESAASDmmonTypes">Success</responseDescription>
         </commonResponse>
      </eSAResponse>
   </env:Body>
</env:Envelope>

1 Ответ

0 голосов
/ 21 февраля 2019

Потому что вы ищете точное строковое значение в тегах.Код будет работать для AccountNumber, потому что у тега нет дополнительных значений.С другой стороны, точное строковое значение тега responseCode, например:

<responseCode xmlns="http://www.someurl.com">

Я считаю, что вам обязательно следует использовать общую библиотеку, такую ​​как DOMParser

Если вы действительно хотите использоватьВаш собственный код, это решение может быть применено:

public static String getTagContents(String xmlString, String tagName) {
        String resp = "";
        String bTagName = "<" + tagName;
        int stInd = xmlString.indexOf(bTagName);
        int enInd = xmlString.indexOf("</" + tagName);
        if (stInd > -1 && enInd > -1) {
            resp = xmlString.substring(stInd + bTagName.length(), enInd);
        }
        return resp.split(">")[1];
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...