我真的需要你的帮助。我有这个XML:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<transaction xmlns="http://www.w3schools.com" transactionName="KYGGT003" application="KYGG" version="01" country="ES" language="EN" type="S" enable="1" pre_event="0" pre_log="0"post_channel="0" post_event="0" post_event_functional="0" post_journal="0" post_log="0" post_rop="0" synchronizedJournal="0" priority="0" timeout="30000" jpa="true">
<paramsIn>
<parameter order="1" name="BANK-CODE" type="String" size="4"mandatory="1" />
<parameter order="2" name="COUNTRY-CODE" type="String" size="2"mandatory="1" />
</paramsIn>
<paramsOut>
<parameter order="9" name="ENTRY-BRANCH-CODE" type="String"size="4" mandatory="0" />
<parameter order="10" name="ENTRY-EMPLOYEE-USER-CODE" type="String"size="8" mandatory="0" />
<parameter order="11" name="ENTRY-EMPLOYEE-CODE" type="String"size="20" mandatory="0" />
<group name="AUTHENTICATION-TYPE" order="12">
<parameter order="1" name="AUTHENTICATION-TYPE- CODE" type="String" size="2" mandatory="0" />
<group name="USERS" order="2">
<parameter order="1" name="USER" type="String" size="80" mandatory="0" />
<group name="PASS" order="3">
<parameter order="1" name="PASS" type="String" size="80" mandatory="0"/>
</group>
</group>
</group>
</paramsOut>
<description>-</description>
</transaction>
这是我的GroupType:
的java@XmlRootElement(name = "group")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {"parameter","group"})
public class GroupType {
@XmlElement(required = true)
protected List<ParamType> parameter;
@XmlElement(name = "group", required=true)
protected List<GroupType> group;
@XmlAttribute
protected String name;
@XmlAttribute
protected String order;
public List<ParamType> getParameter() {
if (parameter == null) {
parameter = new ArrayList<ParamType>();
}
return this.parameter;
}
public String getName() {
return name;
}
public void setName(String value) {
this.name = value;
}
public String getOrder() {
return order;
}
public void setOrder(String value) {
this.order = value;
}
public List<GroupType> getGroup() {
if (group == null) {
group = new ArrayList<GroupType>();
}
return this.group;
}
}
如何将嵌套组添加到GroupType对象中?我已经尝试了很长时间,测试了几种可能性,但我没有找到解决方案。
你会帮我吗?提前谢谢你, 问候。巴勃罗。
答案 0 :(得分:0)
你有什么应该工作。以下是我尝试的方法。
<强> GroupType.java 强>
与你的问题相同。
<强> package-info.java 强>
您需要确保正确映射您的命名空间。如果您的软件包是com.example
,那么您需要以下package-info
类。
@XmlSchema(
namespace = "http://www.w3schools.com",
elementFormDefault = XmlNsForm.QUALIFIED)
package com.example;
import javax.xml.bind.annotation.*;
<强> input.xml中强>
以下是您的问题中与您尝试解组的GroupType
类对应的XML文档的一部分。注意我将问题中文档根元素的xmlns
声明添加到新的根元素group
。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<group name="AUTHENTICATION-TYPE" order="12" xmlns="http://www.w3schools.com" >
<parameter order="1" name="AUTHENTICATION-TYPE- CODE" type="String" size="2" mandatory="0" />
<group name="USERS" order="2">
<parameter order="1" name="USER" type="String" size="80" mandatory="0" />
<group name="PASS" order="3">
<parameter order="1" name="PASS" type="String" size="80" mandatory="0"/>
</group>
</group>
</group>
<强>演示强>
下面是一些代码,它们将XML解组为对象,然后将其编组回XML。
import javax.xml.bind.*;
import java.io.File;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(GroupType.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
File xml = new File("input.xml");
GroupType group = (GroupType) unmarshaller.unmarshal(xml);
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(group, System.out);
}
}
<强>输出强>
以下是运行演示代码的输出。请注意parameter
元素为空,因为我没有在模型重新创建中映射任何属性。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<group xmlns="http://www.w3schools.com" name="AUTHENTICATION-TYPE" order="12">
<parameter/>
<group name="USERS" order="2">
<parameter/>
<group name="PASS" order="3">
<parameter/>
</group>
</group>
</group>