2015-04-01 22 views
0

我的XML输出应该是这样吗?

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
 
<staffs> 
 
    <records xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="employee"> 
 
     <id>1</id> 
 
     <name>Danial</name> 
 
     <age>20</age> 
 
     <TFN>1231231</TFN> 
 
     <contact>12314123</contact> 
 
     <jobType>WAITER</jobType> 
 
     <wage>12.0</wage> 
 
    </records> 
 
    <records xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="employee"> 
 
     <id>2</id> 
 
     <name>Andrew</name> 
 
     <age>21</age> 
 
     <TFN>1231254</TFN> 
 
     <contact>123677</contact> 
 
     <jobType>ADMIN</jobType> 
 
     <wage>18.0</wage> 
 
    </records> 
 
    <records xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="employee"> 
 
     <id>3</id> 
 
     <name>Jenny</name> 
 
     <age>19</age> 
 
     <TFN>1231432</TFN> 
 
     <contact>1239873</contact> 
 
     <jobType>WAITRESS</jobType> 
 
     <wage>15.0</wage> 
 
    </records> 
 
    <employees> 
 
     <id>1</id> 
 
     <name>Danial</name> 
 
     <age>20</age> 
 
     <TFN>1231231</TFN> 
 
     <contact>12314123</contact> 
 
     <jobType>WAITER</jobType> 
 
     <wage>12.0</wage> 
 
    </employees> 
 
    <employees> 
 
     <id>2</id> 
 
     <name>Andrew</name> 
 
     <age>21</age> 
 
     <TFN>1231254</TFN> 
 
     <contact>123677</contact> 
 
     <jobType>ADMIN</jobType> 
 
     <wage>18.0</wage> 
 
    </employees> 
 
    <employees> 
 
     <id>3</id> 
 
     <name>Jenny</name> 
 
     <age>19</age> 
 
     <TFN>1231432</TFN> 
 
     <contact>1239873</contact> 
 
     <jobType>WAITRESS</jobType> 
 
     <wage>15.0</wage> 
 
    </employees> 
 
</staffs>

使用JAXB后反正我的输出是上述情况。 这是正常吗?为什么它重复输入? 记录保存链表和员工延伸记录

,如果有地方,以防这将是渴望听到

import javax.xml.bind.annotation.*; 
 

 
@XmlRootElement(name = "staffs") 
 
@XmlAccessorType(XmlAccessType.FIELD) 
 
public class Employees extends Records 
 
{ 
 
    @XmlElement(type = Employee.class) 
 
\t public LinkedList<Record> getEmployees() 
 
\t { 
 
\t \t return super.getRecords(); 
 
\t } 
 
} 
 

 

 
//////////////////////Employee class///////////////// 
 
import javax.xml.bind.annotation.*; 
 
@XmlRootElement(name = "staff") 
 
@XmlAccessorType(XmlAccessType.FIELD) 
 
public class Employee extends Record 
 
{ 
 
}

+0

你可能有一个重复对象列表 - 为什么你重复获取它们 - 向我们展示如何生成它的代码,我们可能能够找到解决方案。 – Alexander 2015-04-01 07:37:26

+0

@Alexander 这就是基本上它。 我不认为我重复列表。 – 2015-04-01 07:51:12

回答

1

问题IST,因为你必须实际返回相同的干将列表:

  • Record.getRecords()和
  • Employee.getEmployees()。

看到

public LinkedList<Record> getEmployees() 
{ 
    return super.getRecords(); 
} 

这就是为什么你有这样的两个几乎相同的列表。你真的需要这个重复的吸气剂吗?如果不是,只需将其删除,输出将不带重复项。

+0

如果我要删除Employees类中的getter,我将如何参考列表? 我只是在父级设置元素? – 2015-04-01 08:08:36

+0

是的,你可以调用'getRecords()'和'setRecords(List)',如果它们是公共的 - 无论哪个类或子类定义它。猜猜为什么你可以在任何对象上调用'toString()'。 – Alexander 2015-04-01 08:10:17

+0

我明白了你的意思,并把它修好了 – 2015-04-01 08:19:30

相关问题