もしかしたらもっとスマートなやり方があるのかもしれませんが…問題なく動作しますので、XMLの扱いでお悩みの方は是非。
XMLデータから、特定のタグの値を取得する方法です。
なお、参考にしたサイトをうっかり失念してしまったので、今回はリンクはありません。
では早速、コードはこちら。
private void getXmlData(String xml) throws XmlPullParserException, IOException { XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); XmlPullParser parser = factory.newPullParser(); parser.setInput(new StringReader(xml)); int eventType = parser.getEventType(); String data; List<String> arrData = new ArrayList<>(); while (eventType != XmlPullParser.END_DOCUMENT) { if (eventType == XmlPullParser.START_TAG) { switch (parser.getName()) { // データを取得したいタグが一つ case "[データを取得したいタグ名]": parser.next(); data = parser.getText(); break; // データを取得したいタグが複数 case "[データを取得したいタグ名]": parser.next(); arrData.add(parser.getText()); break; } } eventType = parser.next(); } }
こんな感じです。
関数にしているので、そのままコピー&ペーストしてもらえば動作するかと思います。
なお、渡すXMLでデータは 文字列 に変換しています。
重要そうな部分だけを説明すると、10行目から XMLデータを while で、タグやデータなど 1つずつ見ていって、それが開始タグで、かつそれがデータを取得したいタグだった場合はそのタグの値を取得しています。
また、14行目からの case句は、タグが一つしかない場合のデータの取得方法で、対して 19行目からの case句は、タグが複数あった場合のデータの取得方法です。
といっても、データを格納する変数が String
か List
かの違いしかないのですけどね。
これでデータの取得ができますので、あとはこのデータを行いたい処理などに使ってください。
以上、XMLデータから特定のタグのデータを取得する方法でした。
やり方を変えれば、全タグのデータも取得できるかと思いますので、是非ご活用ください。