2013-03-22 63 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