从 XML 到 jTable 的 Java 导入

约翰·凯尔

我想将 XML 导入 jTable。我创建了表单,但表不是带有 xml 数据的字段,代码没有错误。

这是我的代码:

 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>

当我运行我的程序时,表是空的。

某某

a) 您需要检查节点是否为ELEMENT_NODE使用Node.ELEMENT_NODE,而不是实例的。例如,实体节点是表示 DTD 中实体的节点。

b) 您正在为 中的所有元素分配一个字符串值st您需要先收集它们,然后分配给您的数组。最好的方法是将它们收集在列表中。

c) 始终在 catch 块中打印堆栈跟踪。否则,您将不知道异常来自何处以及来自何处。

您的代码应如下所示:

        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");
        }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章