如何使用JAXB和SpringMVC从xml中获取所有值
伙计们。我正在用SpringMVC和JAXB制作一个web应用程序。我需要从一个包含45000行的xml文件中获取行标记的所有内容,并将它们放入浏览器中的一个表中。这就是行的外观如何使用JAXB和SpringMVC从xml中获取所有值,spring,model-view-controller,jaxb,Spring,Model View Controller,Jaxb,伙计们。我正在用SpringMVC和JAXB制作一个web应用程序。我需要从一个包含45000行的xml文件中获取行标记的所有内容,并将它们放入浏览器中的一个表中。这就是行的外观 <row> 0 0 0 HE++ 0 36086.8 36116.5 0 0.52 0.86</row> <row> 0 0 1 O+ 0 36086.8 36
<row> 0 0 0 HE++ 0 36086.8 36116.5 0 0.52 0.86</row>
<row> 0 0 1 O+ 0 36086.8 36116.5 0 0.38 0.62</row>
<row> 0 0 2 H+ 0 36086.8 36116.5 0 0 0</row>
公共类控制器{
@RequestMapping(value = "/rows", method = RequestMethod.GET)
public ModelAndView getRows(){
try{
File file = new File("D:/JavaProjects/ProjectClient/Canon.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Canon.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Canon canon = (Canon) jaxbUnmarshaller.unmarshal(file);
List<Table> table = canon.getTable();
for(Table tables: table){
List<String> row = tables.getRow();
String items;
String value1 = null;
String value2 = null;
String value3 = null;
String value4 = null;
String value5 = null;
String value6 = null;
String value7 = null;
String value8 = null;
String value9 = null;
String value10 = null;
for(int i=0;i<row.size();){
items = row.get(i++);
String[] parts = items.split(" +");
String part1 = parts[1];
String part2 = parts[2];
String part3 = parts[3];
String part4 = parts[4];
String part5 = parts[5];
String part6 = parts[6];
String part7 = parts[7];
String part8 = parts[8];
String part9 = parts[9];
String part10 = parts[10];
value1 = parts[1];
value2 = parts[2];
value3 = parts[3];
value4 = parts[4];
value5 = parts[5];
value6 = parts[6];
value7 = parts[7];
value8 = parts[8];
value9 = parts[9];
value10 = parts[10];
}
ModelAndView model = new ModelAndView("Rows");
model.addObject("part1", value1);
model.addObject("part2", value2);
model.addObject("part3", value3);
model.addObject("part4", value4);
model.addObject("part5", value5);
model.addObject("part6", value6);
model.addObject("part7", value7);
model.addObject("part8", value8);
model.addObject("part9", value9);
model.addObject("part10", value10);
return model;
}
}
}
}
}
}
catch (JAXBException e) {
e.printStackTrace();
}
return null;
}
@RequestMapping(value=“/rows”,method=RequestMethod.GET)
公共模型和视图获取行(){
试一试{
File File=新文件(“D:/JavaProjects/ProjectClient/Canon.xml”);
JAXBContext JAXBContext=JAXBContext.newInstance(Canon.class);
解组器jaxbUnmarshaller=jaxbContext.createUnmarshaller();
佳能佳能=(佳能)jaxbunmarshal.unmarshal(文件);
List table=canon.getTable();
用于(表格:表格){
列表行=tables.getRow();
字符串项;
字符串值1=null;
字符串值2=null;
字符串值3=null;
字符串值4=null;
字符串值5=null;
字符串值6=null;
字符串值7=null;
字符串值8=null;
字符串值9=null;
字符串值10=null;
对于(int i=0;这正是您要做的,您只存储最后一行。但是,我会说,将所有行加载到内存中,解析它们并再次存储到内存中是个坏主意,您可能会遇到内存和性能问题。我会说,您可能更适合使用。创建XSL并让它将XML转换为XMLHTML。更高效的内存,并节省您的内存(尽管您现在必须学习XSL)。非常感谢您的回答,但是如何存储所有这些内容,而不仅仅是最后一个?
@RequestMapping(value = "/rows", method = RequestMethod.GET)
public ModelAndView getRows(){
try{
File file = new File("D:/JavaProjects/ProjectClient/Canon.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Canon.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Canon canon = (Canon) jaxbUnmarshaller.unmarshal(file);
List<Table> table = canon.getTable();
for(Table tables: table){
List<String> row = tables.getRow();
String items;
String value1 = null;
String value2 = null;
String value3 = null;
String value4 = null;
String value5 = null;
String value6 = null;
String value7 = null;
String value8 = null;
String value9 = null;
String value10 = null;
for(int i=0;i<row.size();){
items = row.get(i++);
String[] parts = items.split(" +");
String part1 = parts[1];
String part2 = parts[2];
String part3 = parts[3];
String part4 = parts[4];
String part5 = parts[5];
String part6 = parts[6];
String part7 = parts[7];
String part8 = parts[8];
String part9 = parts[9];
String part10 = parts[10];
value1 = parts[1];
value2 = parts[2];
value3 = parts[3];
value4 = parts[4];
value5 = parts[5];
value6 = parts[6];
value7 = parts[7];
value8 = parts[8];
value9 = parts[9];
value10 = parts[10];
}
ModelAndView model = new ModelAndView("Rows");
model.addObject("part1", value1);
model.addObject("part2", value2);
model.addObject("part3", value3);
model.addObject("part4", value4);
model.addObject("part5", value5);
model.addObject("part6", value6);
model.addObject("part7", value7);
model.addObject("part8", value8);
model.addObject("part9", value9);
model.addObject("part10", value10);
return model;
}
}
}
}
}
}
catch (JAXBException e) {
e.printStackTrace();
}
return null;
}
<html>
<head>
<body>
<center><h1>Table</h1></center>
<table border=1>
<tr>
<td>${part1}</td>
<td>${part3}</td>
<td>${part4}</td>
<td>${part5}</td>
<td>${part6}</td>
<td>${part7}</td>
<td>${part8}</td>
<td>${part9}</td>
<td>${part10}</td>
</tr>
</table>
</center>
</body>
</html>