Log.log(work)

いろんな作業メモ

XMLからparseするときのやり方。+中身を取り出すやり方

XMLからStringに変換するときのやり方。

DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
//doc = builder.parse(new StringBufferInputStream(strXml));//非推奨
doc = builder.parse(new ByteArrayInputStream(xml.getBytes("utf-8")));

全体的な流れはこんな感じ。

List<HogeEntity> resultList = new ArrayList<HogeEntity>();
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+
 "<hogehoge><abc><xyz><foo>hoge</foo></xyz></abc></hogehoge>";
Document doc = null;
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
//doc = builder.parse(new StringBufferInputStream(strXml));//非推奨
doc = builder.parse(new ByteArrayInputStream(xml.getBytes("utf-8")));

// ルートの要素名になっている子ノードを取得する
Element root = doc.getDocumentElement();
// 各ノードリストを取得(レコメンドアイテム単位)
NodeList nodeList = root.getElementsByTagName("abc");

for(int i = 0; i < nodeList.getLength(); i++){
    // レコメンドアイテム内のアイテムフィールド単位を取得
    Element element = (Element)nodeList.item(i);
    NodeList minList = element.getElementsByTagName("xyz");

    // アイテムフィールド値を取得
    for(int j = 0; j < minList.getLength(); j++){
        Element minElement =  (Element)minList.item(j);
        HogeEntity entity = new HogeEntity();
        entity.setItem_code(HttpConversation.getChildren(element, "hoge"));
        resultList.add(entity);
    }
}

docの中身をLog.info(doc)で出したら[#document: null]と表示されてびっくりした。
確認しようと思ったんだけど、これは意味ないので、それよりかはxmlの中身を確認した方が良さげ。