Как создать таблицу в XML-файл, используя Jaxb?

1

Я новичок в JAXB. Я пытаюсь создать формат таблицы в xml файле с помощью Jaxb. Но он не мог работать так, как ожидалось.

Ожидаемый результат

<root>
        <table border="1" width="100%">
            <thead>
                <tr><th>personalDetails</th><th>Date</th><th>Status</th></tr>
            </thead>
            <tbody>
                <tr><td>Ricky,anderson</td><td>Nov 1999</td><td>working</td></tr>
                <tr><td>Mackey,manson</td><td>Nov 1979</td><td>completed</td></tr>
                <tr><td>Corney,Richson</td><td>Nov 1989</td><td>pending</td></tr>   
            </tbody>
        </table>
</root>

До сих пор я пробовал

@XmlRootElement(name = "table")
public class Table {


        String table;
        String thread;
        String border;
        String width;
        String tbody;
        public String getTbody() {
            return tbody;
        }
        @XmlElement(name = "tbody")
        public void setTbody(String tbody) {
            this.tbody = tbody;
        }

        public String getThread() {
            return thread;
        }

        @XmlElement(name = "thread")
        public void setThread(String thread) {
            this.thread = thread;
        }

        public String getBorder() {
            return border;
        }

        @XmlAttribute(name = "border")
        public void setBorder(String border) {
            this.border = border;
        }
        @XmlAttribute(name = "width")
        public void setWidth(String width) {
            this.width = width;
        }
        public String getWidth() {
            return width;
        }
}

Класс Root Element. Также я борюсь в этом классе,

@XmlRootElement(name = "text")
public class RootTable {

    Table table;

    public Table getTable() {
        return table;
    }

    public void setTable(Table table) {
        this.table = table;
    }

Основной класс

public class Test {

    public static void main(String[] args) throws JAXBException {

        Table table = new Table();
        table.setThread("<tr><th>personalDetails</th><th>Date</th><th>Status</th></tr>");
        table.setWidth("15");
        table.setBorder("100");
        table.setTbody("<tr><td>Ricky,anderson</td><td>Nov 1999</td>td>working</td></tr>");
        RootTable too = new RootTable();
        too.setTable(table);
            JAXBContext jaxbContext = JAXBContext.newInstance(RootTable.class);
    Marshaller jaxbMarshaller = jaxbContext.createMarshaller();

    // output pretty printed
    jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

    //jaxbMarshaller.marshal(customer, file);
    jaxbMarshaller.marshal(too, System.out);

            }
}

Если я запустил программу, он отобразит следующий результат

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<text>
    <table width="15" border="100">
        <tbody>&lt;tr&gt;&lt;td&gt;Ricky,anderson&lt;/td&gt;&lt;td&gt;Nov 1999&lt;/td&gt;td&gt;working&lt;/td&gt;&lt;/tr&gt;</tbody>
        <thread>&lt;&lt;tr&gt;&lt;th&gt;personalDetails&lt;/th&gt;&lt;th&gt;Date&lt;/th&gt;&lt;th&gt;Status&lt;/th&gt;&lt;/tr&gt;</thread>
    </table>
</text>

Я не знаю, как двигаться дальше? Есть ли другой вариант? Кто-нибудь может мне помочь.

  • 1
    Вы пытались запустить свой код? Что это печатает?
  • 0
    Если вы спросите меня, хотя технически это не так, AFAIK, плохая идея поместить таблицу HTML таким образом в файл XML
Показать ещё 3 комментария
Теги:
jaxb

1 ответ

1

Чтобы решить проблему, продолжайте свое моделирование. Вы должны создавать классы Tr и Td и добавлять экземпляры этих классов в таблицу вместо добавления полной строки.

Однако я полностью согласен с ребятами, которые упомянули, что не лучше использовать JAXB для генерации HTML. Я не знаю, какова ваша конечная цель, хотя теоретически HTML является подмножеством XML, там есть лучшие инструменты для работы с ним.

Я могу упомянуть, однако, что я лично использовал метод синтаксического анализа XML для работы с HTML, однако были и другие ограничения, которые заставляли меня делать это.

  • 0
    +1 - хотя вам не понадобится класс для Td поскольку Tr может просто отобразить List<String> на элемент td .
  • 1
    @BlaiseDoughan, хорошо, ты прав ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню