Разархивируйте XML-файл, используя JAXB - PullRequest
0 голосов
/ 20 ноября 2018

[ОБНОВЛЕНИЕ] Я пытаюсь использовать jaxb для хранения XML-элемента в массиве.Я видел много учебных пособий для хранения в формате ниже XML в объекте или массиве

<country>
   <name>nepal</name>
   <zip>123</zip>
</country>

, и я пробовал с другим видом XML-файла, как показано ниже, и это не сработало

<TransactionList>
<Transaction type="D" amount="61" narration="Electricity bill" />
<Transaction type="D" amount="32" narration="Social security payment" />
<Transaction type="D" amount="33" narration="Payment sent to x" />
<Transaction type="C" amount="111" narration="Salary" />
<Transaction type="D" amount="233" narration="Car rental" />

я попробовал так, как показано ниже код

try {

                File file = new File("C:\\Users\\anon\\Desktop\\Transaction_Data.xml");
                JAXBContext jaxbContext = JAXBContext.newInstance(Transaction.class);

                Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
                Transaction transaction = (Transaction) jaxbUnmarshaller.unmarshal(file);
                System.out.println(transaction);


              } catch (JAXBException e) {
                e.printStackTrace();
              }

мой класс pojo (Transaction.java)

@XmlRootElement(name="TransactionList")
@XmlAccessorType(XmlAccessType.FIELD)
public class Transaction {

@XmlElement(name="type")
private String type;

@XmlElement(name="amount")
private BigDecimal amount;

@XmlElement(name="narration")
private String narration;

@XmlElement(name = "Transaction")
private List<Transaction> transaction= null;

public List<Transaction> getTransaction() {
    return transaction;
}

public void setTransaction(List<Transaction> transaction) {
    this.transaction = transaction;
}

я получаю это как вывод

com.progressoft.induction.tp.models.Transaction@0

когда я пытаюсь это сделать

transaction.getAmount(); 

, тогда я получаю ноль

1 Ответ

0 голосов
/ 20 ноября 2018

Код нуждается в незначительных изменениях, чтобы приспособить список транзакций к одному объекту Country.

Класс, содержащий список транзакций:

@XmlRootElement(name = "transactions")
@XmlAccessorType (XmlAccessType.FIELD)
public class Transactions
{
    @XmlElement(name = "transactions")
    private List<Transaction> transactions= null;

    public List<Transaction> getTransactions() {
        return transactions;
    }

    public void setTransactions(List<Transaction> transactions) {
        this.transactions= transactions;
    }
}

Класс транзакции:

@XmlRootElement(name = "employee")
@XmlAccessorType (XmlAccessType.FIELD)
public class Transaction 
{
    private Integer type;
   .......

Бизнес логика:

Transactions transactions = (Transactions) jaxbUnmarshaller.unmarshal(file);
                System.out.println(transaction);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...