package cn.ac.sec.service.empi.guizhou; import java.io.StringReader; import java.io.StringWriter; import java.net.URL; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; import javax.xml.rpc.Service; import cn.ac.sec.common.constant.Constant; import cn.ac.sec.common.constant.URLConstant; import cn.ac.sec.common.util.PropertiesUtil; import cn.ac.sec.model.app.AppUser; import cn.ac.sec.service.empi.guizhou.model.PersonInfo; import cn.com.mandalat.UHIDService.UHIDServiceLocator; import cn.com.mandalat.UHIDService.UHIDServiceSoapStub; public class UHIDService { protected static String GZ_EMPI_WS_URL=null; static{ PropertiesUtil util = new PropertiesUtil(Constant.CUSTOM_PROPERTIES); GZ_EMPI_WS_URL=util.readKey(Constant.GZ_EMPI_WS_URL); } public static String entrty2XML(PersonInfo pserson) throws Exception{ JAXBContext context = JAXBContext.newInstance(PersonInfo.class); Marshaller marshaller = context.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); marshaller.setProperty(Marshaller.JAXB_ENCODING, "GBK"); StringWriter writer = new StringWriter(); marshaller.marshal(pserson, writer); System.out.println(writer.toString()); String str= writer.toString(); int i = str.indexOf("<personInfo>")+"<personInfo>".length() ; int j = str.indexOf("</personInfo>"); System.out.println( str.substring(i, j)); return str.substring(i, j); } public static PersonInfo getPersonInfo(AppUser user){ PersonInfo personInfo = new PersonInfo(); personInfo.setUID(null); personInfo.setName(user.getRealname()); personInfo.setGender(user.getGender().toString()); personInfo.setHoroscopy(user.getBirthday()); personInfo.setTerritory(user.getAddress()); personInfo.setIdiom(null); personInfo.setMater(null); personInfo.setMemory(null); personInfo.setCertType(user.getType()); personInfo.setCertId(user.getIdNumber()); return personInfo; } /** * 注册 */ public static void UHIDregister(AppUser user){ PersonInfo personInfo = getPersonInfo(user); String requesthead = "<EMPIRequest Token=\"xxxxxxxxx\" sn:type=\"PersonalInfoRegistry\" xmlns:sn=\"http://www.w3.org/2001/XMLSchema-instance\">"; String requestfoot = "</EMPIRequest>"; try { String str = entrty2XML(personInfo); String requestStr = requesthead + str + requestfoot; URL endpointURL =new URL(GZ_EMPI_WS_URL); Service service = (Service) new UHIDServiceLocator(); UHIDServiceSoapStub stub = new UHIDServiceSoapStub(endpointURL, service); stub.EMPIExecute(requestStr); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 修改 */ public static void UHIDupdate(){ } /** * 注销 */ public static void UHIDcancle(){ } /** * 查询 */ public static void UHIDquery(){ } public static void main(String[] args) { AppUser app = new AppUser(); app.setAddress("beijing"); app.setRealname("wangn"); app.setIdNumber("123456780987654"); app.setType("sfz"); app.setGender(1); app.setBirthday("20180509"); PersonInfo p = getPersonInfo(app); try { entrty2XML(p); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
输出为:
<?xml version="1.0" encoding="GBK" standalone="yes"?> <personInfo> <Name>wangning</Name> <Gender>1</Gender> <Horoscopy>20180509</Horoscopy> <Territory>beijing</Territory> <CertType>sfz</CertType> <CertId>123456780987654</CertId> </personInfo> <Name>wangning</Name> <Gender>1</Gender> <Horoscopy>20180509</Horoscopy> <Territory>beijing</Territory> <CertType>sfz</CertType> <CertId>123456780987654</CertId>
另外注意实体类中的字段需要使用
@XmlRootElement进行标注生成xml的节点
实体类:
import java.util.Arrays; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; /** * 贵州人员实体类 * @author fdwdz * */ @XmlAccessorType(value=XmlAccessType.FIELD) @XmlRootElement public class PersonInfo { /** * 主索引UID */ @XmlElement private String UID; /** * 姓名、称呼 */ @XmlElement private String Name; /** * 性别 */ @XmlElement private String Gender; /** * 出生日期 */ @XmlElement private String Horoscopy; /** * 出生地省级行政区 */ @XmlElement private String Territory; /** * 出生地语言标识 */ @XmlElement private String Idiom; /** * 母亲姓名 */ @XmlElement private String Mater; /** * 联系人姓名 */ @XmlElement private String Memory; /** * 身份证件数组 */ @XmlElement private String[] Certifications; /** * 证件类型 */ @XmlElement private String CertType; /** * 证件号 */ @XmlElement private String CertId;