2013-03-22 39 views
0

我想弄清楚如何将各种XML文件读入HTTP Servlet。 XML文件都代表一个数据表。做这个的最好方式是什么?我试图避免被锁定到某些列或知道列的名称。如何将XML文件读入数据表类型对象?

我不确定存储数据的最佳方式,但我不太了解Java中可用的数据对象。我正在考虑一个多维数组或列表的列表。

感谢您的任何意见

的XML文件看起来是这样的,从W3Schools的:

<CATALOG> 
    <CD> 
    <TITLE>Empire Burlesque</TITLE> 
    <ARTIST>Bob Dylan</ARTIST> 
    <COUNTRY>USA</COUNTRY> 
    <COMPANY>Columbia</COMPANY> 
    <PRICE>10.90</PRICE> 
    <YEAR>1985</YEAR> 
    </CD> 
    <CD> 
    <TITLE>Hide your heart</TITLE> 
    <ARTIST>Bonnie Tyler</ARTIST> 
    <COUNTRY>UK</COUNTRY> 
    <COMPANY>CBS Records</COMPANY> 
    <PRICE>9.90</PRICE> 
    <YEAR>1988</YEAR> 
    </CD> 
</CATALOG> 

或本:

<fruits> 
    <fruit> 
    <name>orange</name> 
    </fruit> 
    <fruit> 
    <name>grapes</name> 
    </fruit> 
    <fruit> 
    <name>bananas</name> 
    </fruit> 
</fruits> 

最后我用JDOM和创建一个列表用于存储数据的字符串列表。代码如下,任何意见/反馈表示赞赏。谢谢!

ArrayList<ArrayList<String>> dataList = new ArrayList<ArrayList<String>>(); 

    SAXBuilder builder = new SAXBuilder(); 
    URL url = new URL("http://localhost/test/test.xml");  
    InputStream stream = url.openStream(); 

    Document document = null;   

    try { 
     document = builder.build(stream); 
    } 
    catch (JDOMException e) { 
    } 

    // Get Root Element and name 
    Element root = document.getRootElement(); 
    String rootName = root.getName(); 

    // Get Second Level Elements, the rows of the data table 
    List<Element> items = root.getChildren(); 

    // Get column names, using the first element 
    List<Element> firstItem = items.get(0).getChildren(); 
    ArrayList<String> colNames = new ArrayList<String>(); 
    for (Element col : firstItem){ 
     colNames.add(col.getName()); 
    } 
    dataList.add(colNames); 

    // Get data 
    for (Element item : items) { 
     ArrayList<String> row = new ArrayList<String>(); 
     for (Element col : item.getChildren()) { 
      row.add(col.getText()); 
     } 
     dataList.add(row); 
    } 
+0

使用XML模式和JAXB。 – 2013-03-22 22:15:12

+0

使用XML模式?但我不想为每个模式(列数)编写单独的方法。 – 2013-03-22 22:38:54

+0

模式通过指定XML文档的结构来工作;您应该能够指定具有可变列数的结构。 – 2013-03-22 22:47:21

回答

1

显然有许多方法...

我最喜欢的开源Java库,用于读取XML是JDOM

我最喜爱的存储表格数据的通用结构是字符串列表。这是我通常如何定义它们。 List> myData = new ArrayList>();

+0

谢谢!我为我提议的解决方案添加了代码,任何建议/反馈意见。 – 2013-03-26 13:29:29