0

私は XmlStreamReader がドキュメントの先頭から開始し (明らかに)、next() を呼び出したときに XML ドキュメントのルートにジャンプすることを期待しています。しかし、恐ろしいことに、内部にテキストがある最初のタグにジャンプし、常にルートを省略し、2 番目のタグ (???) を省略することがよくあります。

ドキュメントは次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<objektliste xmlns="http://www.pixelboxx.de/ns/erco/translations/1.0">
  <uebersetzungen key="122671" attribute="7505">
    <thumbnail>abrakadabra.jpg</thumbnail>
    <text sprache="1031">We like the abla abla abla</text>
    <text sprache="2057">We like the spoonBlaBlaBla[en]</text>
    <text sprache="1036">Wicher</text>
  </uebersetzungen>
  <uebersetzungen key="122679" attribute="7505">
    <thumbnail>122679.jpg</thumbnail>
    <text sprache="1031">Kiefer</text>
    <text sprache="1036">franek</text>
  </uebersetzungen>
</objektliste>

私は狂っているのだろうか、私の日食は狂っているのだろうか、それとも明らかな何かが見えないのだろうか? プログラムは常に「objektliste」を省略し、通常は最初に「thumbnail」にジャンプするように見えますが、以前のデバッグ セッションではさらにランダムに動作するように見えました。ヘルプ!!!

ところで、コードは非常に単純です。

    XMLStreamReader streamReader = factory.createXMLStreamReader( is);

    while( streamReader.hasNext())
    {
//event type 7 here, everything seems to be ok. 
        streamReader.next();
//bang! armaggeddon - skips the root, jumps to thumbnail.
4

1 に答える 1

1

への呼び出しstreamReader.next()はイベント ベースです。

next() メソッドにより、リーダーは次の解析イベントを読み取ります。next() メソッドは、読み取ったイベントのタイプを識別する整数を返します。

イベント タイプは、getEventType() を使用して決定できます。

終了要素イベントが表示されるという問題が発生している可能性があり、それを予期していなかったと思います。

次のコードを使用すると、適切な注文が期待どおりに処理されていることがわかります。

XMLInputFactory factory = XMLInputFactory.newInstance();
XMLStreamReader streamReader = factory.createXMLStreamReader(is);

while( streamReader.hasNext()) {
  int eventType = streamReader.next();
  switch (eventType) {
      case XMLStreamReader.START_ELEMENT:
          String elementName = streamReader.getLocalName();
          System.out.println("Element: " + elementName);
          break;
      case XMLStreamReader.END_ELEMENT:
          break;
  }
}

これにより、期待される出力が生成されます。

Element: objektliste
Element: uebersetzungen
Element: thumbnail
Element: text
Element: text
Element: text
Element: uebersetzungen
Element: thumbnail
Element: text
Element: text
于 2016-03-30T23:12:21.453 に答える