Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用JAXB和SpringMVC从xml中获取所有值_Spring_Model View Controller_Jaxb - Fatal编程技术网

如何使用JAXB和SpringMVC从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

伙计们。我正在用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       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>