【发布时间】:2014-09-23 08:05:09
【问题描述】:
大家好,
我对 jaxb 注释比较陌生。我可以通过使用注释来绑定通用 xml。我想学习如何绑定更复杂的 xml。到目前为止,我已经阅读了其他一些帖子;主要是this post,但我还是有点迷茫。
我正在尝试使用的示例 xml 是这个:
<request>
<model> text </model>
<file name = aFileName> file contents</file>
</request>
aFileName 取决于文件夹中的文件名,而文件内容将是该文件的实际内容
另外,让我有点困惑的另一件事是我将如何分配元素的值。我知道使用数据传输对象时的编组/解组通常是 ObjInst.setter("value")。然后将整个对象传递给编组器/解组器。您将如何使用具有特定属性名称的元素执行此操作?如果你们能提供给我任何帮助,我们将不胜感激。
这是我目前的代码:RequestMsg 类
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import org.eclipse.persistence.oxm.annotations.XmlPath;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(propOrder = { "model", "file",})
@XmlRootElement(name = "request")
public class RequestMsg implements Serializable {
private static final long serialVersionUID = -5003915336631618163L;
@XmlElement()
private String model;
private ElemWithAttr file;
@XmlPath("file/@myAttr")
private String myAttr;
// CLASS GETTERS & SETTERS
public ElemWithAttr getFile(){
return file;
}
public String getModel() {
return model;
}
public void setFile(ElemWithAttr file) {
this.file = file;
}
public void setModel(String model) {
this.model = model;
}
}
这是 ElemWithAttr 类的代码:
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlValue;
public class ElemWithAttr {
@XmlValue
public String content;
@XmlAttribute
public String myAttr;
// CLASS GETTERS & SETTERS
public String getContent() {
return content;
}
public String getMyAttr() {
return myAttr;
}
public void setContent(String audioString) {
this.content = audioString;
}
public void setMyAttr(String myAttr) {
this.myAttr = myAttr;
}
}
【问题讨论】:
-
我不确定你到底在问什么。 “你将如何使用具有特定属性名称的元素来执行此操作?” - 做什么? “另外,还有一件事”——那么第一个问题是什么?
-
那么,什么不起作用?您的注释似乎或多或少没问题。
-
对不起,我有点罗嗦了。基本上我正在尝试使用注释来整理我上面给出的 xml 示例。我的问题是使用哪个注释可以让我从代码的另一部分获取名称属性
-
好的,所以您基本上想以编程方式设置将由 JAXB 编组的属性的名称?
-
我遇到的第一个问题是在 RequestMsg 中设置 file 和 myattr 的值。在代码中,两者都是字符串。因此,如果我尝试在类中使用 setFile 设置器,则会收到错误和建议的快速修复解决方案,以将类型更改为 ElemWithAttr,这也会强制更改 ElemWithAttr 类
标签: java xml spring jaxb annotations