亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通過使用 JAXB 通過取消編組將 XML 轉換為對象

通過使用 JAXB 通過取消編組將 XML 轉換為對象

紅顏莎娜 2022-08-03 15:08:59
我想通過使用JAXB取消編組將XML轉換為java。這是我的員工.xml。我試圖轉換,但它顯示錯誤javax.xml.bind.UnmarshalException<?xml version="1.0" encoding="UTF-8"?><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><deptname name="Delivery">  <employee>    <eid>d-001</eid>    <ename>Kanchana M</ename>    <age>35</age>    <deptcode>d3</deptcode>    <deptname>Delivery</deptname>    <salary>20000</salary></employee>  </deptname>
查看完整描述

1 回答

?
www說

TA貢獻1775條經驗 獲得超8個贊

根據 XML 文檔,您只能有一個根元素,因此應將 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>

    <deptname name="Delivery">

        <employee>

            <eid>d-001</eid>

            <ename>Kanchana M</ename>

            <age>35</age>

            <deptcode>d3</deptcode>

            <deptname>Delivery</deptname>

            <salary>20000</salary>

        </employee>

    </deptname>

</departments>

然后,您需要一個類部門來閱讀該文章:


@XmlRootElement(name="departments")

public class Departments {

  List<Department> deptname;


  // Getters and setters

}

測試用例是:


@Test

  public void testXML() {

    try {

      File file = new File("./src/main/resources/employee.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();

    }

  }

其次,您沒有“研究”或“銷售”或“交付”屬性,您有一個可以采用任何字符串值的屬性“name”,因此您需要更改實現:


public class Department {

  @XmlAttribute(name = "name")

  private String name;


  @XmlElement(name = "employee")

  private List<Employee> employee = new ArrayList<>();


  // Getters and setters

}


查看完整回答
反對 回復 2022-08-03
  • 1 回答
  • 0 關注
  • 79 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號