@XmlRootElement ╰+攻爆jí腚メ 2021-09-23 13:58 232阅读 0赞 * @XmlRootElement @XmlRootElement public class Student { private String name; private String age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } } 结果: > <?xml version="1.0" encoding="UTF-8" standalone="yes"?> > <student> > <age>19</age> > <name>tom</name> > </student> * @XmlAttribute,不放在属性上,放在方法上,不然报错有相同属性,暂时不知道为什么 @XmlRootElement public class Student { private String name; private String age; @XmlAttribute public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } } 结果: > <?xml version="1.0" encoding="UTF-8" standalone="yes"?> > <student name="tom"> > <age>19</age> > </student> * @XmlValue @XmlRootElement public class Student { private String name; private String age; @XmlAttribute public String getName() { return name; } public void setName(String name) { this.name = name; } @XmlValue public String getAge() { return age; } public void setAge(String age) { this.age = age; } } 结果: > <?xml version="1.0" encoding="UTF-8" standalone="yes"?> > <student name="tom">19</student> * 测试 java2xml public static void main(String[] args) throws JAXBException { Student student = new Student(); student.setAge("19"); student.setName("tom"); JAXBContext context = JAXBContext.newInstance(Student.class); Marshaller marshaller = context.createMarshaller();// 创建 Marshaller 实例 marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);// 设置转换参数 -> 这里举例是告诉序列化器是否格式化输出 PrintStream out = System.out;// 构建输出环境 -> 这里使用标准输出,输出到控制台Console marshaller.marshal(student, out);// 将所需对象序列化 -> 该方法没有返回值 } xml2java public class Xml2Java { public static void xmlTojava() throws Exception { String str = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n" + "<student name=\"tom\">19</student>\r\n"; // 获取JAXB的上下文环境,需要传入具体的 Java bean -> 这里使用Student JAXBContext context = JAXBContext.newInstance(Student.class); // 创建 UnMarshaller 实例 Unmarshaller unmarshaller = context.createUnmarshaller(); // 加载需要转换的XML数据 -> 这里使用InputStream,还可以使用File,Reader等 //InputStream stream = Student.class.getClassLoader().getResourceAsStream("lesson1.xml"); StreamSource stream = new StreamSource(new StringReader(str)); // 将XML数据序列化 -> 该方法的返回值为Object基类,需要强转类型 Student stu = (Student) unmarshaller.unmarshal(stream); // 将结果打印到控制台 System.out.println(stu); } public static void main(String[] args) throws Exception { xmlTojava(); } } * 嵌套 预期结果: > <?xml version="1.0" encoding="UTF-8" standalone="yes"?> > <envelope> > <header>myhead</header> > <field name="tom">13</field> > </envelope> 实现:有个类Envelope,属性有String header,还有嵌套类 Field field。其中Field 类有属性String name 和String value。 @XmlRootElement @XmlType(propOrder = {"header", "field"}) public class Envelope { private String header; private Field field; public String getHeader() { return header; } public void setHeader(String header) { this.header = header; } public Field getField() { return field; } public void setField(Field field) { this.field = field; } } @XmlRootElement public class Field { private String name; private String value; @XmlAttribute public String getName() { return name; } public void setName(String name) { this.name = name; } @XmlValue public String getValue() { return value; } public void setValue(String value) { this.value = value; } } 测试类 public class Java2xml { public static void javaToxml(Envelope e) throws Exception { // 获取JAXB的上下文环境,需要传入具体的 Java bean -> 这里使用Student JAXBContext context = JAXBContext.newInstance(Envelope.class); // 创建 Marshaller 实例 Marshaller marshaller = context.createMarshaller(); // 设置转换参数 -> 这里举例是告诉序列化器是否格式化输出 marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); // 构建输出环境 -> 这里使用标准输出,输出到控制台Console PrintStream out = System.out; // 将所需对象序列化 -> 该方法没有返回值 marshaller.marshal(e, out); } public static void main(String[] args) throws Exception { Envelope envelope = new Envelope(); envelope.setHeader("myhead"); Field f = new Field(); f.setName("tom"); f.setValue("13"); envelope.setField(f); javaToxml(envelope); } }
相关 Java基础---@XmlRootElement 注解对象 @XmlRootElement 注解的好处是可以,让对象和xml之间方便转换; @XmlRootElement(name = "XMLTest") 墨蓝/ 2022年09月21日 05:42/ 0 赞/ 775 阅读
相关 @XmlRootElement @XmlRootElement @XmlRootElement public class Student { private String n ╰+攻爆jí腚メ/ 2021年09月23日 13:58/ 0 赞/ 233 阅读
还没有评论,来说两句吧...