Конвертировать XML Ответ в Specifi c POJO - PullRequest
0 голосов
/ 18 марта 2020

Вот ответ XML, который я получил через вызов API:

<userinfo>
    <LOGINID>CPAUser</LOGINID>
    <DESCRIPTION>Console Member</DESCRIPTION>
    <CONTACTINFO.CONTACTNAME>CPAUser</CONTACTINFO.CONTACTNAME>
    <CONTACTINFO.PREFIX></CONTACTINFO.PREFIX>
    <CONTACTINFO.FIRSTNAME>External</CONTACTINFO.FIRSTNAME>
    <CONTACTINFO.INITIAL></CONTACTINFO.INITIAL>
    <CONTACTINFO.LASTNAME>User</CONTACTINFO.LASTNAME>
    <CONTACTINFO.COMPANYNAME></CONTACTINFO.COMPANYNAME>
    <CONTACTINFO.PRINTAS>Console Member</CONTACTINFO.PRINTAS>
    <CONTACTINFO.PHONE1></CONTACTINFO.PHONE1>
    <CONTACTINFO.PHONE2></CONTACTINFO.PHONE2>
    <CONTACTINFO.CELLPHONE></CONTACTINFO.CELLPHONE>
    <CONTACTINFO.PAGER></CONTACTINFO.PAGER>
    <CONTACTINFO.FAX></CONTACTINFO.FAX>
    <CONTACTINFO.EMAIL1>noreply@intacct.com</CONTACTINFO.EMAIL1>
    <CONTACTINFO.EMAIL2></CONTACTINFO.EMAIL2>
    <CONTACTINFO.URL1></CONTACTINFO.URL1>
    <CONTACTINFO.URL2></CONTACTINFO.URL2>
    <CONTACTINFO.MAILADDRESS.ADDRESS1></CONTACTINFO.MAILADDRESS.ADDRESS1>
    <CONTACTINFO.MAILADDRESS.ADDRESS2></CONTACTINFO.MAILADDRESS.ADDRESS2>
    <CONTACTINFO.MAILADDRESS.CITY></CONTACTINFO.MAILADDRESS.CITY>
    <CONTACTINFO.MAILADDRESS.STATE></CONTACTINFO.MAILADDRESS.STATE>
    <CONTACTINFO.MAILADDRESS.ZIP></CONTACTINFO.MAILADDRESS.ZIP>
    <CONTACTINFO.MAILADDRESS.COUNTRY>United States</CONTACTINFO.MAILADDRESS.COUNTRY>
    <CONTACTINFO.MAILADDRESS.COUNTRYCODE></CONTACTINFO.MAILADDRESS.COUNTRYCODE>
    <ADMIN>Full</ADMIN>
    <USERTYPE>business user</USERTYPE>
    <VISIBLE>false</VISIBLE>
    <STATUS>active</STATUS>
    <UNRESTRICTED>true</UNRESTRICTED>
    <LOGINDISABLED>false</LOGINDISABLED>
    <PWDNEVEREXPIRES>false</PWDNEVEREXPIRES>
    <RESETPASSWORD>false</RESETPASSWORD>
    <PWDQLYNOTENFORCED>false</PWDQLYNOTENFORCED>
    <WHENCREATED>01/01/1970 00:00:00</WHENCREATED>
    <WHENMODIFIED>08/24/2019 03:01:42</WHENMODIFIED>
    <CREATEDBY></CREATEDBY>
    <MODIFIEDBY></MODIFIEDBY>
    <RECORDNO>3</RECORDNO>
    <CONTACTKEY>3</CONTACTKEY>
    <CHATTER_DISABLED>false</CHATTER_DISABLED>
    <MEGAENTITYKEY></MEGAENTITYKEY>
    <MEGAENTITYID></MEGAENTITYID>
    <MEGAENTITYNAME></MEGAENTITYNAME>
    <SSO_ENABLED>false</SSO_ENABLED>
    <SSO_FEDERATED_ID></SSO_FEDERATED_ID>
    <SSO_COMPANY_ENABLED>Disabled</SSO_COMPANY_ENABLED>
    <MFA_ENABLED>false</MFA_ENABLED>
    <MFA_NOTRUST>none</MFA_NOTRUST>
</userinfo>

И на основе инструмента преобразования XML в POJO http://pojo.sodhanalibrary.com/

Вот код, который я получаю:

public class Userinfo
{
    public String CONTACTINFO.MAILADDRESS.CITY;
    public String CONTACTINFO.INITIAL;
    public String MFA_ENABLED;
    public String CHATTER_DISABLED;
    public String MEGAENTITYNAME;
    public String CONTACTINFO.COMPANYNAME;
    public String CONTACTINFO.PREFIX;
    public String CONTACTINFO.MAILADDRESS.ZIP;
    public String STATUS;
    public String CONTACTINFO.URL2;
    public String LOGINID;
    public String CONTACTINFO.URL1;
    public String ADMIN;
    public String MEGAENTITYKEY;
    public String MEGAENTITYID;
    public String MODIFIEDBY;
    public String RESETPASSWORD;
    public String SSO_FEDERATED_ID;
    public String MFA_NOTRUST;
    public String CONTACTINFO.FAX;
    public String CONTACTINFO.CONTACTNAME;
    public String PWDQLYNOTENFORCED;
    public String SSO_ENABLED;
    public String CONTACTINFO.PAGER;
    public String CONTACTINFO.MAILADDRESS.COUNTRY;
    public String CONTACTINFO.PRINTAS;
    public String CONTACTINFO.MAILADDRESS.COUNTRYCODE;
    public String CONTACTINFO.EMAIL2;
    public String PWDNEVEREXPIRES;
    public String WHENCREATED;
    public String CONTACTINFO.EMAIL1;
    public String VISIBLE;
    public String WHENMODIFIED;
    public String RECORDNO;
    public String CONTACTINFO.PHONE2;
    public String CONTACTINFO.CELLPHONE;
    public String CONTACTINFO.PHONE1;
    public String DESCRIPTION;
    public String USERTYPE;
    public String CREATEDBY;
    public String SSO_COMPANY_ENABLED;
    public String CONTACTINFO.MAILADDRESS.ADDRESS2;
    public String CONTACTINFO.LASTNAME;
    public String CONTACTINFO.MAILADDRESS.ADDRESS1;
    public String UNRESTRICTED;
    public String CONTACTINFO.FIRSTNAME;
    public String LOGINDISABLED;
    public String CONTACTINFO.MAILADDRESS.STATE;
    public String CONTACTKEY;
}

Как вы наверняка знаете, переменная в Java не может быть названа так, как показано выше, например, как CONTACTINFO.FIRSTNAME, и это приведет к синтаксической ошибке

С помощью @JacksonXmlProperty(CONTACTINFO.xxx) я могу переименовать переменные. Но тогда это окажется утомительным процессом, использующим эту аннотацию для всех элементов в формате XXX.YYY

. Есть ли способ преобразовать XML в POJO, как показано ниже:

public class Userinfo
{
    public String MFA_ENABLED;
    public String CHATTER_DISABLED;
    ...
    public Contactinfo contactinfo;

    public class Contactinfo {
        public String CONTACTINFO_EMAIL1;
        ...
    }
}

Я могу обрабатывать имена переменных, но мне нужен способ получить вышеуказанный формат

Дайте мне знать, если я что-то пропустил. Я использую XmlMapper для разбора XML.

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