java JAXB与XML属性的解组问题
我在用JAXB解组XML文件时遇到了一个问题。在一些xml元素上有一个名为“display_value”的属性,我需要获取该属性。以下是XML文件的一个小示例:
<unload>
<change_request>
<active>true</active>
<approval>not requested</approval>
<assigned_to display_value=""/>
<alt_poc display_value="Tom Ford">056468745677484657</alt_poc>
<poc display_value="Matt Ryan">56465148754878</poc>
</change_request>
</unload>
我假设在我的ChangeRequest类中,我只需在具有该属性的display_值的字段上注释@XmlAttribute(name=“display_value”),例如alt_poc,但这似乎不起作用
@XmlAccessorType(XmlAccessType.FIELD)
public class ChangeRequest{
String active;
String approval;
String assigned_to;
String alt_poc;
String poc;
}
我有一个类,它包含一个ChangeRequest对象列表,称为ChangeRequests。该类很简单,如下所示:
@XmlRootElement(name="unload")
public class ChangeRequests{
ArrayList<ChangeRequest> changeRequestList;
@XmlElement(name="change_request")
public ArrayList<ChangeRequest> getRecords(){
return changeRequestList;
}
最后,我将向您展示执行所有这些操作的JAXB代码
URL url = new URL("wwww.somethingInteresting.com/syz.xml");
try {
JAXBConext jc = JAXBContext.newInstance(ChangeRequest.class, ChangeRequests.class);
Unmarshaller un = jc.createUnmarshaller();
return (ChangeRequests) un.unmarshal(url);
} catch(JAXBException e){
thow new RunTimeException(e);
}
目前,所有的代码都可以工作,但是我无法在需要时获得display_值。我得到的不是显示值,而是像65484435487这样的长数字
任何人能提供的任何帮助都将是巨大的。谢谢大家!
# 1 楼答案
您需要为每个具有XML属性的元素创建单独的类,不能在ChangeRequest类上定义display_值。下面是一个例子
首先,我从示例XML生成了一个XSD:
然后我从这个XSD生成了JAXB类。以下是ChangeRequestType:
例如,这里是AssignedToType。请注意,必须在此处定义显示值: