2017-05-30 14 views
0

XMLをjTableにインポートしたい。 私はフォームを作成しますが、テーブルはxmlデータのフィールドではなく、コードはエラーなしです。JavaからXMLからjTableへのインポート

private void Tabela() {       
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance(); 
try{ 
DocumentBuilder builder = domFactory.newDocumentBuilder(); 
    Document doc = builder.parse("testxml.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); 
     } 
    } 
} 
catch(Exception ex) 
{ 
    System.out.print("error"); 
} 
} 

XML::私は私のプログラムを実行しています

<?xml version="1.0" encoding="UTF-8"?> 
    <note> 
    <to>Tove</to> 
    <from>Jani</from> 
    <heading>Reminder</heading> 
    <body>Don't forget me this weekend!</body> 
    </note> 

テーブルが空である

は、ここに私のコードです。

+0

この週末私を忘れないで! – aaaa

答えて

0

a)ノードがELEMENT_NODEかどうかを確認する必要があります。インスタンスではなくNode.ELEMENT_NODEを使用してください。エンティティノードは、例えばDTD内のエンティティを表すノードである。

b)stのすべての要素に単一の文字列値を割り当てています。まずそれらを収集してから配列に割り当てる必要があります。最も良い方法は、リストでそれらを収集することです。

c)常にスタックトレースをキャッチブロックに印刷します。さもなければどこから例外が来るのか分からないでしょう。

あなたのコードは次のようになります。<?= "1.0" エンコード= "UTF-8" XMLバージョン?> トーベ ヤニ リマインダー ドン

 DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance(); 
     try 
     { 
      DocumentBuilder builder = domFactory.newDocumentBuilder(); 
      Document doc = builder.parse("testxml.xml"); 

      Element root = doc.getDocumentElement(); 

      NodeList nodelist1 = root.getChildNodes(); 

      String[] st = null; 
      List<String> texts = new ArrayList<String>(); 
      for (int i = 0; i < nodelist1.getLength(); i++) 
      { 
       Node node = nodelist1.item(i); 
       if (node.getNodeType() == Node.ELEMENT_NODE) 
       { 
        texts.add(node.getTextContent()); 

       } 
      } 

      st = texts.toArray(new String[]{}); 


      System.out.println(Arrays.toString(st)); 

      DefaultTableModel model = (DefaultTableModel)jTable1.getModel(); 

      model.addRow( st); 

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

ありがとうございます – aaaa

関連する問題