• ベストアンサー

xmlを読み込んで、データをリストに・・・

Javaでxmlファイルを読み込んで、リストに入れたいのです。xmlファイルには <info id="hogehoge" name="sample" </info> <info id="hogehogehoge" name="samplesample" </info> といったようにrootがないxmlファイルになっており、idをリストに入れたいのです。rootタグがないと難しいでしょうか? どなたかご教授願います!

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

>仮のrootを持つ事も不可能なのです・・・。 もとのxmlファイルを変更するということではなくて 例えば 文字列にroot をつくって、ファイルから読み込んだもので構成してそれからDOMを作るとかすればいいじゃないですか? 例えばこんな感じ ---------------------------------------------------------------- import java.io.*; import javax.xml.parsers.*; import org.xml.sax.InputSource; import org.w3c.dom.*; public class Sample { public static void main (String[] args) { try { BufferedReader fin = new BufferedReader(new InputStreamReader(new FileInputStream("data.xml"),"Shift_JIS"));//質問の内容の場合charset は必要ないから、まあ、見本 String xmldata="<root>\n"; String aLine =""; while(null != (aLine=fin.readLine())){ xmldata+=aLine + "\n"; } xmldata+="</root>"; System.out.println(xmldata); DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = dbfactory.newDocumentBuilder(); Document doc = builder.parse(new InputSource(new StringReader(xmldata))); Element root = doc.getDocumentElement(); NodeList list = root.getElementsByTagName("info"); //id の取り出し for (int i=0; i < list.getLength() ; i++) { Element element = (Element)list.item(i); String id=element.getAttribute("id"); System.out.println("id:"+ id); } } catch (Exception e) { e.printStackTrace(); } } }

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

root がないのが問題なら、仮にroot を作ってやれば良いと思います。 質問文では info が閉じていないように思いますが それだと、多分扱えないと思います。

satosai
質問者

補足

回答ありがとうございます。xmlファイルに余計な記述はできないので、仮のrootを持つ事も不可能なのです・・・。

関連するQ&A