Я новичок в 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><tr><td>Ricky,anderson</td><td>Nov 1999</td>td>working</td></tr></tbody>
<thread><<tr><th>personalDetails</th><th>Date</th><th>Status</th></tr></thread>
</table>
</text>
Я не знаю, как двигаться дальше? Есть ли другой вариант? Кто-нибудь может мне помочь.
Чтобы решить проблему, продолжайте свое моделирование. Вы должны создавать классы Tr
и Td
и добавлять экземпляры этих классов в таблицу вместо добавления полной строки.
Однако я полностью согласен с ребятами, которые упомянули, что не лучше использовать JAXB для генерации HTML. Я не знаю, какова ваша конечная цель, хотя теоретически HTML является подмножеством XML, там есть лучшие инструменты для работы с ним.
Я могу упомянуть, однако, что я лично использовал метод синтаксического анализа XML для работы с HTML, однако были и другие ограничения, которые заставляли меня делать это.
Td
поскольку Tr
может просто отобразить List<String>
на элемент td
.