gpt4 book ai didi

java - Jaxb XML 属性

转载 作者:行者123 更新时间:2023-12-01 14:36:26 26 4
gpt4 key购买 nike

我正在使用 JAXB 将 java 对象编码为 XML。我需要创建一些类似的东西

<link rel="self" href="test" />

如何做到这一点?我应该使用什么注释。

任何帮助将不胜感激

Java 类

public class Item {

private String title;
private int price;

private String productLink;
private String rel;

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public int getPrice() {
return price;
}

public void setPrice(int price) {
this.price = price;
}

@XmlPath("link/@href")
public String getProductLink() {
return productLink;
}

public void setProductLink(String productLink) {
this.productLink = productLink;
}

最佳答案

您可以创建一个用 @XmlRootElement 注释的 Link 类,其属性(relhref)用 @XmlAttribute 进行注释。

以下教程将帮助您熟悉JAXB (JSR-222) :

<小时/>

选项 #1 - 使用 EclipseLink JAXB (MOXy) 作为您的 JAXB 提供程序

EclipseLink JAXB (MOXy) 中使用 @XmlPath 扩展您可以执行以下操作:

@XmlPath("link[@rel='self']/@href")
public String getProductLink() {
return productLink;
}

了解更多信息

<小时/>

选项 #2 - 使用 JAXB 提供商

您可以使用XmlAdapter

@XmlElement(name="link")
@XmlJavaTypeAdapter(LinkAdapter.class)
public String getProductLink() {
return productLink;
}

LinkAdapter

import javax.xml.bind.annotation.*;
import javax.xml.bind.annotation.adapters.XmlAdapter;

public class LinkAdapter extends XmlAdapter<LinkAdapter.Link, String>{

public static class Link {

@XmlAttribute
public String rel = "self";

@XmlAttribute
public String href;
}

@Override
public String unmarshal(Link v) throws Exception {
return v.href;
}

@Override
public Link marshal(String v) throws Exception {
Link link = new Link();
link.href = v;
return link;
}

}

关于java - Jaxb XML 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16448852/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com