0

我编写了一个可以将数据保存到 xml 的代码。现在我想使用该存储的 xml 并将其数据导入表单中的表中。问题是:代码没有错误,但表格不是带有 xml 数据的字段:(这是我的代码:

  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>
4

2 回答 2

1
  1. 您在 Root-Node 下搜索节点 FrameDefinitionSection-Tags,但您必须搜索 FrameNameAndElements-Tags
  2. getElementsByTagName 也会找到 sub-sub-sub-tags。

你最好使用这个:

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

        }
于 2012-09-19T09:09:38.323 回答
0

如果你像下面这样写,nodelist1 为空。

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

所以你需要像这样改变,

  NodeList nodelist1 = doc.getElementsByTagName("FrameDefinitionSection");
于 2012-09-19T09:41:33.713 回答