0

Java を使用して xml(DOM) からマルチレベル タグを読み取りたいのですが、サンプル xml は次のとおりです。

<ルート>
     <サブクラス>
         <サブクラス>
             <サブクラス>
                 <name>テスト1</name>
                 <アドレス>アドレス1</アドレス>
              </サブクラス>
               <name>テスト2</name>
               <アドレス>アドレス2</アドレス>
         </サブクラス>
         <name>テスト3</name>
         <アドレス>アドレス3</アドレス>
     </サブクラス>
 </ルート>
上記の xml から <name> test2 </name> と <address> address2 </address> を読み取る方法は?

サンプルコードを提供しました..しかし、値を動的に見つける必要があります。サブクラス タグを使用して bu を反復すると、すべてのデータが表示されます。<name> test2 </name> や <address> address2 </address>などの特定のデータを取得する方法を知りたいだけです。

以下は、上記のxmlを読み取っている私のJavaコードです:

NodeList fList = firstWordElement
                        .getElementsByTagName("root");
                for (int i = 0; i < fList.getLength(); i++) {
                    Node firstFLNode = fList.item(i);
                    if (firstFLNode.getNodeType() == Node.ELEMENT_NODE) {
                        Element firstWdElement = (Element) firstFLNode;
                        NodeList firstWdList = firstWdElement.getElementsByTagName("innerclass");

                        for (int j = 0; j < firstWdList.getLength(); j++) {

                            Element firstWd1Element = (Element) firstWdList.item(j);

                            if (firstWd1Element.getNodeType() == Node.ELEMENT_NODE) {
                                String InnerName = ParseUtil.getTagValue("name", firstWd1Element);
                                String InnerFormat = ParseUtil.getTagValue("format", firstWd1Element);
                                String InnerDescription = ParseUtil.getTagValue("description", firstWd1Element);

                                NodeList innerClassList = firstWd1Element.getElementsByTagName("subclass");

                                for (int k = 0; k < innerClassList.getLength(); k++) {

                                    Element subClassElement = (Element) innerClassList
                                            .item(k);
                                    if (subClassElement.getNodeType() == Node.ELEMENT_NODE) {
                                        String InnerSubName = ParseUtil.getTagValue("name", subClassElement);
                                        System.out.println("Innername==="+ InnerSubName);
                                        String InnerSubFormat = ParseUtil.getTagValue("format", subClassElement);
                                        System.out.println("Innerformat==="+ InnerSubFormat);
                                        String InnerSubDescription = ParseUtil.getTagValue("description", subClassElement);
                                        System.out.println("Innerdescription==="+ InnerSubDescription);

                                    }
                                }

                            }



                        }
                    }
                }
4

2 に答える 2

1

これを行う簡単な方法は、XPath クエリを使用することです。これらのチュートリアルをチェックしてください:

http://www.ibm.com/developerworks/library/x-javaxpathapi/index.html

http://www.javabeat.net/2009/03/how-to-query-xml-using-xpath/

于 2012-09-28T13:59:24.073 に答える
0

従来、ノードを反復処理する必要があり、通常は親ノードから getChildren() を使用して NodeList を作成することによって実行されます。test2 ノードのみが必要な場合は、何らかの比較を実行する必要があります。2 番目のノードに直接ジャンプすることはできません。つまり、可能ですが、それでは非常に堅牢で拡張可能なソリューションにはなりません。

于 2012-09-28T14:00:19.247 に答える