Вот ответ 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.