jaxbjava的简单介绍

博主:adminadmin 2022-12-21 05:54:10 58

今天给各位分享jaxbjava的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

继承类怎么用jaxb解析获取父类的属性

JAXB中的继承问题

问题

JAXB是我用过的java处理XML的方法中做方便的一个,在jaxb中如何使用类的集成关系有一个小小的需要注意的地方。看下面的两端XML。

XML

示例1:

a

b/b

c/c

a

XML示例2:

a

b/b

d/d

a

这两段XML的唯一差别就在c元素与d元素。为了生成这两个XML,有几种方案。

方案一

不利用类的继承来重用代码,写两套Java代码, 如:

@XmlRootElement(name = a)

public class A

{

B b;

C c:

}

@XmlRootElement(name = a)

public class A2

{

B b;

D d:

}

public class B {}

public class D {}

这一方案不是我们想要的,虽然可以解决问题,但是不能重用两个XML中共有的结构。

方案二

利用一个父类表示两个XML之间的共同的结构,用两个子类扩展这个父类,分别添加 C 和 D

元素。

代码如下:

@XmlRootElement(name = "a")

public class A {

B

b;

}

public class B {}

public class C {}

public class D

{}

public class E extends A {

C c;

}

public class F

extends A {

D d;

}

这一方案看似很直观,但是实践中却发现 E 和 F 却都只能生成 父类的

部分,如下的XML:

a

b/b

a

即使把 @XmlRootElement(name = “a”) 移到 E 和 F类上也行不通。

方案三

用一个类代表共同的结构,用一个父类代表C和D元素,在用两个类代表具体化的C和D类,如:

@XmlRootEelemnt(name =

"a")

public class A {

B b;

@XmlElements({

@XmlElement(name =

"c", type=C.class),

@XmlElement(name = "d", type=D.class)

})

E

e;

}

public class B {}

public class E {}

public class C extends

E {}

public class D extends E {}

这样做才最终达到目的。关键点就是@XmlElements的使用。

关于jaxb用jaxb如何实现java对象和xml的转换

既然你不想定义result这个类,那你service中的属性都可以不用定义了,直接使用XmlJavaTypeAdapter这样大的注解去marshal、unmarshal对象xml就行了。一般使用jaxb,如果属性为某个类库中定义的类,而需要转换为xml时,通过XmlJavaTypeAdapter来进行特殊处理。如插件开发中,元素属性为:org.eclipse.draw2d.geometry.Rectangle(矩形)时,通过XmlJavaTypeAdapter转换,如下所示: import javax.xml.bind.annotation.adapters.XmlAdapter; import org.eclipse.draw2d.geometry.Rectangle; public class LayoutXmlAdapter extends XmlAdapterString, Rectangle{@Overridepublic String marshal(Rectangle v) throws Exception{if(v == null) return ""; return v.x + "," + v.y + "," + v.width + "," + v.height;}@Overridepublic Rectangle unmarshal(String v) throws Exception{if(v != null v.trim().length() 0){String[] ps = v.split(","); if(ps.length ==4){int x = Integer.parseInt(ps[0]); int y = Integer.parseInt(ps[1]); int width = Integer.parseInt(ps[2]); int height = Integer.parseInt(ps[3]); return new Rectangle(x, y, width, height);}}return new Rectangle(0, 0, 0, 0);}}如果你非要不定义result类,直接转换为: 那你可以使用XmlJavaTypeAdapter注解。

如何用jaxb xsd 生成java类

#0. 准备要转换的xml文件,在Project视界中,右击这个xml文件,在弹出的菜单上选择“Generate XSD schema from XML File...”, 按默认设置生成xsd文件。

将xsd 文件移至#1配置段的configuration/sources/source指定的路径下.

JAVA中怎么把XML文件中的数据通过JAXB技术保存到List集合里面去,为什么我的老报错找不到根节点?

先看看你给出的路径对不对。File路径。接着看看你xml文件符不符合jaxb规范。你通过注解的方式配置的xml,那你还得看看xmlElement下的每一个uri和你java po类的uri对应不。也就是看字段的名字对应不,问题的关键 是处在这里,uri不对应。该为一致或是@XMLElement(name="uri")

java中利用jaxb转换xml的格式?

package com.jaxb.core;

import javax.xml.bind.annotation.XmlAttribute;

import javax.xml.bind.annotation.XmlElement;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement

public class Customer {

String name;

int age;

int id;

public String getName() {

return name;

}

@XmlElement

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

@XmlElement

public void setAge(int age) {

this.age = age;

}

public int getId() {

return id;

}

@XmlAttribute

public void setId(int id) {

this.id = id;

}

}

如何在java中使用JAXB返回Map格式返回参数不报错

在Java中,定义方法返回Map跟返回其他类型一样,只需要指定方法的返回类型为Map即可。

具体实现如下:

public MapString,Object doSomething(){...}

Map是Java中的一个键值对接口,开发中经常会用到。Map接口提供三种collection

视图,允许以键集、值集或键-值映射关系集的形式查看某个映射的内容。映射顺序 定义为迭代器在映射的 collection

视图上返回其元素的顺序。Map接口的实现子类有很多,其中较为常用的有HashMap, Hashtable,TreeMap,ConcurrentHashMap等。

jaxbjava的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、jaxbjava的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-21,除非注明,否则均为首码项目网原创文章,转载请注明出处。