2012-09-19 106 views
0

我寫了一個可以將數據保存到xml的代碼。現在我想使用存儲的XML並將其數據導入到表格中的表格中。問題是:該代碼是沒有錯誤,但該表不是XML數據:( 這裏場是我的代碼:從xml導入jtable

private void jPanel4ComponentShown(java.awt.event.ComponentEvent evt) {          
     // TODO add your handling code here: 
    DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance(); 
    try{ 
    DocumentBuilder builder = domFactory.newDocumentBuilder(); 
    Document doc = builder.parse("D:\\test.xml"); 

    Element root = doc.getDocumentElement(); 

    NodeList nodelist1 = root.getElementsByTagName("FrameDefinitionSection"); 

    String[] st= new String[4]; 

    for(int i=0;i<nodelist1.getLength();i++) 
    { 
     Node node=nodelist1.item(i); 
     st[0]= node.getChildNodes().item(1).getTextContent(); 
     st[1]= node.getChildNodes().item(3).getTextContent(); 
     st[2]= node.getChildNodes().item(5).getTextContent(); 
     st[3]= node.getChildNodes().item(7).getTextContent(); 
     ((DefaultTableModel) jTable1.getModel()).addRow(st); 
    } 



    } 
    catch(Exception ex) 
    { 
     System.out.print("error"); 
    } 
}   

,這裏是我的xml文件: 表應顯示在節點這個XML轉換表的字段,但它不工作:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<FrameDefinitionSection> 
<FrameNameAndElements> 
<FrameName>here is the frame's name</FrameName> 
<FrameElements>its element</FrameElements> 
</FrameNameAndElements> 
<FrameDefinition> 
<Definition>the definition of the frame</Definition> 
</FrameDefinition> 
<FrameExampleSentences> 
<ExampleSentences>its example as well</ExampleSentences> 
</FrameExampleSentences> 
</FrameDefinitionSection> 
+0

'趕上(例外前){ 是System.out.print ( 「錯誤」); (例外ex) ex.printStackTrace(); }'那麼我們可能會知道爲什麼*「..它不起作用!」* –

+0

不,它沒有幫助。它與NodeList錯誤nodelist1 = root.getElementsByTagName(「FrameDefinitionSection」); String [] st = new String [4]; (i = 0; i SunnY

回答

1
  1. 您搜索節點的根節點下FrameDefinitionSection標籤,但你必須尋找FrameNameAndElements標籤
  2. 的getElementsByTagName也會找到子子標籤。

您更好地使用這樣的:

 DocumentBuilder builder = domFactory.newDocumentBuilder(); 
     Document doc = builder.parse("D:\\test.xml"); 

     Element root = doc.getDocumentElement(); 

     NodeList nodelist1 = 
       root.getChildNodes(); 

     String[] st = new String[4]; 

     for (int i = 0; i < nodelist1.getLength(); i++) 
     { 
      Node node = nodelist1.item(i); 
      if (node.getNodeType() == node.ENTITY_NODE) { 
       st[0] = node.getChildNodes().item(1).getTextContent(); 
       st[1] = node.getChildNodes().item(3).getTextContent(); 
       st[2] = node.getChildNodes().item(5).getTextContent(); 
       st[3] = node.getChildNodes().item(7).getTextContent(); 
       ((DefaultTableModel) jTable1.getModel()).addRow(st); 
      } 

     } 
+0

它在控制檯打印「錯誤」 – SunnY

+1

尊重安德魯湯普森的建議,並帶有錯誤信息。 –

+0

我試着改變代碼,但它成功建立,但表是空的! – SunnY

0

如果你喜歡寫以下,nodelist1爲空。

NodeList nodelist1 = root.getElementsByTagName("FrameDefinitionSection"); 

所以,你需要改變這樣的,

NodeList nodelist1 = doc.getElementsByTagName("FrameDefinitionSection"); 
+0

嗨9ine,我想他想有一個FrameExampleSentences的列表。因爲FrameDefinitionSection已經存儲在根中;) –