杭州网站程序开发公司,在哪个公司建设网站好,网络营销工具与方法,wordpress所有页面都显示不出来前言#xff1a;
最近项目在做静态代码扫描的时候#xff0c;出现Java类中成员变量命名的问题#xff0c;开头字母必须小写#xff0c;但是这个类成员是对接其他公司的字段#xff0c;对方提供的请求格式是XML#xff0c;必须将Java类转化为XML的格式#xff0c;而且这…前言
最近项目在做静态代码扫描的时候出现Java类中成员变量命名的问题开头字母必须小写但是这个类成员是对接其他公司的字段对方提供的请求格式是XML必须将Java类转化为XML的格式而且这个类成员变量开头还必须大写网上查阅了大量资料总结出了使用这个三个变量可以完美解决问题。
这里笔者就不使用Data注解了方便食用 目的
1 将Java类成功映射成XML
2 类中某个成员变量开头大写 准备 XmlAccessorType 和 XmlElement 是 Java Architecture for XML Binding (JAXB) 规范中的注解用于控制 Java 对象与 XML 表示之间的映射关系。 XmlAccessorType(XmlAccessType.FIELD)
工作原理 该注解用于指定 JAXB 在映射 Java 类与 XML 之间的时候应该访问哪一种属性。XmlAccessType.FIELD 表示 JAXB 应该直接访问类的字段fields而不是通过 getter 和 setter 方法。 作用 控制 JAXB 如何访问类的属性。
XmlElement
工作原理 该注解用于映射 Java 类的字段或属性到 XML 元素。它可以用在字段或 getter 方法上。 作用 定义 Java 对象如何转换为 XML 元素以及反向转换。
三种不同场景示例 场景一仅使用 XmlElement 注解这里注意一般是写在get方法上面 import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;XmlRootElement
public class Person {private String name;private int age;XmlElementpublic String getName() {return name;}public void setName(String name) {this.name name;}XmlElementpublic int getAge() {return age;}public void setAge(int age) {this.age age;}
}
结果
personnameJohn Doe/nameage30/age
/person场景二仅使用 XmlAccessorType(XmlAccessType.FIELD) 注解 import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;XmlRootElement
XmlAccessorType(XmlAccessType.FIELD)
public class Person {private String name;private int age;// No need for XmlElement herepublic String getName() {return name;}public void setName(String name) {this.name name;}// No need for XmlElement herepublic int getAge() {return age;}public void setAge(int age) {this.age age;}
}
结果
personnameJohn Doe/nameage30/age
/person场景三共同使用 XmlAccessorType(XmlAccessType.FIELD) 和 XmlElement 注解 这里已经很明显了在使用XmlAccessorType(XmlAccessType.FIELD)基础上可以修改成员变量映射XML后的名称 import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;XmlRootElement
XmlAccessorType(XmlAccessType.FIELD)
public class Person {// No need for XmlElement hereprivate String name;// No need for XmlElement hereprivate int age;// XmlElement is required hereXmlElement(name Acity)private String address;public String getName() {return name;}public void setName(String name) {this.name name;}public int getAge() {return age;}public void setAge(int age) {this.age age;}public String getAddress() {return address;}public void setAddress(String address) {this.address address;}
}结果
personnameJohn Doe/nameage30/ageAcityNew York/Acity
/person总结
第三种场景就可以满足本次需求
在上述示例中第一个场景使用了 XmlElement 注解第二个场景使用了 XmlAccessorType(XmlAccessType.FIELD) 注解而第三个场景同时使用了两者。在场景三中对于 address 字段使用了 XmlElement(name Acity) 来指定 XML 元素的名称。这些注解的组合方式可以根据需求来灵活使用以达到对 XML 与 Java 对象的映射要求。