将一个XML(xmlA)映射到映射到不同XML契约(xmlB)的jaxb生成的pojo的“正确”处理方法是什么
例如,使用以下输入:
<?xml version="1.0"?>
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
</book>
</catalog>
我想映射到以下类
public class PART
{
private String ITEM;
private String MANUFACTURER;
@Override
public String toString()
{
return "ClassPojo [ITEM = "+ITEM+", MANUFACTURER = "+MANUFACTURER+"]";
}
}
作者将ITEM和标题地图映射到MANUFACTURER。
目前我正在使用xml转换然后映射;这是最好/正确的做法吗?或者这个问题的行业标准是什么。
谢谢
答案 0 :(得分:0)
注意:类名应为大小写(Part
),字段名称应为小写,或者更确切地说是camelCase(item
和manufacturer
)
您可以在@XmlElement
注释上指定元素名称。
public class Test {
public static void main(String[] args) throws Exception {
String xml = "<?xml version=\"1.0\"?>\n" +
"<catalog>\n" +
" <book id=\"bk101\">\n" +
" <author>Gambardella, Matthew</author>\n" +
" <title>XML Developer's Guide</title>\n" +
" </book>\n" +
"</catalog>";
JAXBContext jc = JAXBContext.newInstance(Catalog.class, PART.class);
Unmarshaller u = jc.createUnmarshaller();
Catalog catalog = (Catalog)u.unmarshal(new StringReader(xml));
for (PART part : catalog.parts)
System.out.println(part.toString());
}
}
@XmlRootElement(name="catalog")
class Catalog {
@XmlElement(name="book")
List<PART> parts;
}
class PART
{
@XmlElement(name="author")
private String ITEM;
@XmlElement(name="title")
private String MANUFACTURER;
@Override
public String toString()
{
return "ClassPojo [ITEM = "+ITEM+", MANUFACTURER = "+MANUFACTURER+"]";
}
}
输出
ClassPojo [ITEM = Gambardella, Matthew, MANUFACTURER = XML Developer's Guide]