0

DOMパーサーを介して解析しているxmlがあります。xmlはややこのシーケンスです

 <root>
   <item1> abc </item1>
   <item2> def </item2>
   <item3> ghi </item3>
   <item4>
        <subItem4>
              <name> xyz </name>
              <id>   1  </id>
        </subItem4>
        <subItem4>
              <name> asd </name>
              <id>   2  </id>
        </subItem4>
   </item4>
</root>

このダミーのxmlによると、私はsubItem 4まで到達していますが、その子孫には到達していません。私が試しているのは、最も内側のアイテムを取得するために次のとおりです。

NodeListスライド=theElement.getElementsByTagName( "item4")。item(0).getChildNodes();

        for(int i = 0; i<slide.getLength(); i++)
        {
            NodeList subSlides = theElement.getElementsByTagName("subItem4").item(0).getChildNodes();

                for (int j=0; j<subSlides.getLength(); j++)
                {
                    String subSlide_title   = subSlides.item(i).getFirstChild().getNodeValue();             

                }
        }

動いていない。誰かが構文解析の間違いをどこで行っているのか特定できますか?どんな助けでも大歓迎です。

4

3 に答える 3

1
NodeList nodes = doc.getElementsByTagName("item");
 for (int i = 0; i < nodes.getLength(); i++) {
     Element element = (Element) nodes.item(i);
     NodeList nodesimg = element.getElementsByTagName("name");
     for (int j = 0; j < nodesimg.getLength(); j++) {
        Element line = (Element) nodesimg.item(j);
        String value=getCharacterDataFromElement(line);
     }
}
public static String getCharacterDataFromElement(Element e) {
  Node child = e.getFirstChild();
  if (child instanceof CharacterData) {
     CharacterData cd = (CharacterData) child;
     return cd.getData();
  }
  return "?";
}

上記のコードは、xml ファイルの解析に役立つと思います。

于 2011-07-08T13:52:50.853 に答える
1

XML 要素はすべてめちゃくちゃです。間違いのない行が文字通り 2 行あります。

例えば

<subItem 4> 

は構文的に間違っており、それからどのような論理的な意味を理解できるかわかりません。

ということですか

<subItem4> 

4 番目のサブ項目のように、または

<subItem someAttribute="4">

XML の学習をお勧めします。XML は非常に簡単です... http://www.w3schools.com/xml/default.asp

于 2011-07-08T15:07:58.750 に答える
1

有効な XML を使用していません。タグ名にスペースを含めることはできません。

XML 名に空白を含めることはできません。有効な値については、こちらを参照してください。


更新 (投稿されたサンプルが実際の XML を表すというコメントに従ってください):

ノード リストのインデクサーを介したアクセスが正しくありません:

String subSlide_title = subSlides.item(i).getFirstChild().getNodeValue();

代わりにこれを試してください(内側のループ変数が呼び出されるため、j代わりにを使用します):i

String subSlide_title = subSlides.item(j).getFirstChild().getNodeValue();
于 2011-07-08T13:41:04.653 に答える