Java 如何使用jaxb在xml文件中创建表?
我是JAXB的新手。我曾尝试使用JAXB在xml文件中创建表格式。但它无法按预期工作 预期产出Java 如何使用jaxb在xml文件中创建表?,java,jaxb,Java,Jaxb,我是JAXB的新手。我曾尝试使用JAXB在xml文件中创建表格式。但它无法按预期工作 预期产出 <root> <table border="1" width="100%"> <thead> <tr><th>personalDetails</th><th>Date</th><th>Status</th><
<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 = "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);
}
}
公共类测试{
公共静态void main(字符串[]args)抛出JAXBEException{
Table Table=新表();
表.setThread(“PersonalDetailsDataStatus”);
表.设置宽度(“15”);
表1.订单(“100”);
表.设置体(“Ricky,andersonNov 1999td>工作”);
RootTable too=新的RootTable();
太。可设置(table);
JAXBContext JAXBContext=JAXBContext.newInstance(RootTable.class);
Marshaller jaxbMarshaller=jaxbContext.createMarshaller();
//输出精美印刷品
setProperty(Marshaller.JAXB_格式化的_输出,true);
//jaxbMarshaller.marshall(客户,文件);
jaxbMarshaller.marshal(太多,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>
特拉德里奇,安德森/TD1999年11月/tdtdworking/td/tr
trthpersonalDetails/ththDate/thStatus/th/tr
我不知道如何继续下去?还有其他选择吗?有人能帮我吗。要解决这个问题,请继续建模。您必须创建类
Tr
和Td
,并将这些类的实例添加到表中,而不是添加完整的字符串
然而,我完全同意那些提到使用JAXB生成HTML不是最好的主意的人的观点。我不知道你的最终目标是什么,尽管理论上HTML是XML的一个子集,但有更好的工具可以使用它
然而,我可以提到,我个人使用XML解析技术来处理HTML,但是还有其他一些限制使我这样做 你试过运行你的代码吗?它打印什么?如果你问我,虽然技术上没有错,但在xml文件中这样放置HTML表是个坏主意,我强烈建议不要直接从Java类生成HTML。相反,请尝试生成一个干净的XML格式,并在其上应用XSLT转换。下面是@四十二-+1建议的方法示例-您不需要为
Td
创建一个类,因为Tr
可以将列表
映射到Td
元素。
<?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>