【问题标题】:I want to convert XML to Java by unmarshalling我想通过解组将 XML 转换为 Java
【发布时间】:2019-03-13 14:02:43
【问题描述】:

这是我的 XML,我想解组它。

<?xml version="1.0" encoding="UTF-8"?>
<departments>
    <deptname name="Research">
        <employee>
            <eid>r-001</eid>
            <ename>Dinesh R</ename>
            <age>35</age>
            <deptcode>d1</deptcode>
            <deptname>Research</deptname>
            <salary>20000</salary>
        </employee>
    </deptname>
    <deptname name="Sales">
        <employee>
            <eid>s-001</eid>
            <ename>Kanmani S</ename>
            <age>35</age>
            <deptcode>d2</deptcode>
            <deptname>Sales</deptname>
            <salary>30000</salary>
        </employee>
    </deptname>
</departments>

部门.java

public class Department 
{ 
    @XmlAttribute(name = "deptname")
    private String name;

    @XmlElement(name = "employee") 
    private List<Employee> employee = new ArrayList<>();//getter and setter//
}

这是我的 Departments.java

public class Departments {

    List<Department> deptname;

    public List<Department> getDeptname() {
        return deptname;
    }

    public void setDeptname(List<Department> deptname) {
        this.deptname = deptname;
    }
}

这是我的 Unmarshalling.java

public class Unmarshalling {
    public void testXML() {
        try {
            File file = new File(
                "/home/scrunch/work/workspace/sts/default/EmployeeUnmarshall/src/main/java/OutputXml.xml");
            JAXBContext jaxbContext = JAXBContext.newInstance(Departments.class);
            Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
            Departments departments = (Departments) jaxbUnmarshaller.unmarshal(file);
            System.out.println(departments);
        } catch (JAXBException e) {
            e.printStackTrace();
        }
    }
}

我已经尝试解组,但我没有得到 java 对象。我得到了 xml 格式。我正在做休息服务。为此,我需要解组 XML 文件,这样我就可以获取 Java 对象了。先生,请您更新一下。

【问题讨论】:

  • 在上面的代码中,研究部里面还有4名员工属于研究部,也和销售部一样。我试图 Un marshall ,但我没有得到 java 格式。我只得到了输出 xml 格式。你能更新我吗,我会怎么做。
  • 我创建了两个java类,一个是Department.java---
  • 这是我的 Department.java ----public class Department { @XmlAttribute(name = "deptname") private String name; @XmlElement(name = "employee") private List employee = new ArrayList();----//getterand setter//
  • 这是我的 Departments.java-----public class Departments { List deptname; public List getDeptname() { return deptname; } public void setDeptname(List deptname) { this.deptname = deptname; } }
  • 嗨 Latha,欢迎来到 stackoverflow。最好使用附加信息编辑您的问题。您可以在问题本身中添加您在此处添加的所有 cmets 吗?

标签: java xml jaxb unmarshalling


【解决方案1】:

我尝试了您的代码并最终出现此错误:

线程“主”javax.xml.bind.UnmarshalException 中的异常:意外元素(uri:“”,本地:“部门”)。预期的元素是(无)

通过这样声明 Departments 来修复它:

@XmlRootElement(name="departments")
public class Departments {

    List<Department> deptname;

    public List<Department> getDeptname() {
        return deptname;
    }

    public void setDeptname(List<Department> deptname) {
        this.deptname = deptname;
    }
}

that question

试一试

【讨论】:

  • 谢谢先生,我得到了输出。
  • 先生,我还有一个疑问,正如您所说,我创建了 java 类,现在我正在为上述 xml 做休息服务。我对控制器感到震惊。我将如何在控制器中映射。
  • @Latha 您应该为此提出另一个问题,因为它与 XML 解析无关。这取决于您使用的是什么框架,如果有的话,您还需要描述您的端点,我猜这将是一个接受 XML 有效负载的 POST。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-13
  • 2019-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多