1

この XML は非常に苦労して設計されていますが、とにかく処理する必要があります。これをオブジェクトのリストにすることはできません<ack>。それぞれに異なるタグのセットがあるからですよね? 助けてください!

<frm>
   <version>1.1.0</version>
   <ack>
      <id_1>--</id_1>
      <pow_1 />
      <temp_1 />
      <state_1>fixed</state_1>
   </ack>
   <ack>
      <id_2>0000C6F5</id_2>
      <pow_2>0w</pow_2>
      <temp_2>---</temp_2>
      <state_2>fixed</state_2>
   </ack>
   <ack>
      <id_3>--</id_3>
      <pow_3 />
      <temp_3 />
      <state_3>fixed</state_3>
   </ack>
   <ack>
      <id_4>--</id_4>
      <pow_4 />
      <temp_4 />
      <state_4>fixed</state_4>
   </ack>
   <ack>
      <id_5>--</id_5>
      <pow_5 />
      <temp_5 />
      <state_5>fixed</state_5>
   </ack>
   <ack>
      <id_6>--</id_6>
      <pow_6 />
      <temp_6 />
      <state_6>fixed</state_6>
   </ack>
   <ack>
      <id_7>--</id_7>
      <pow_7 />
      <temp_7 />
      <state_7>fixed</state_7>
   </ack>
   <ack>
      <id_8>--</id_8>
      <pow_8 />
      <temp_8 />
      <state_8>fixed</state_8>
   </ack>
   <ack>
      <id_9>--</id_9>
      <pow_9 />
      <temp_9 />
      <state_9>fixed</state_9>
   </ack>
   <ack>
      <id_10>--</id_10>
      <pow_10 />
      <temp_10 />
      <state_10>fixed</state_10>
   </ack>
</frm>
4

2 に答える 2

0

StAXの方が簡単だと思います

    XMLStreamReader xr = ...
    while (xr.hasNext()) {
        int n = xr.next();
        if (n == XMLStreamReader.START_ELEMENT)) {
            String name = xr.getLocalName();
            if (name.startsWith("id")) {
                ack = new Ack();
                ack.id = xr.getElementText();
            } else if (name.startsWith("pow")) {
                ...
            } else if (name.startsWith("state")) {
                ack.state = xr.getElementText();
                list.add(ack);
            }
        }
    }
于 2013-08-07T07:03:39.300 に答える