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 は null になります。

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

したがって、このように変更する必要があります。

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