####以下のようなxmlファイルから、fugaタグの属性と値を取得したいとします。
<?xml version="1.0" encoding="UTF-8" ?>
<hoge>
<fuga id="1" name="tarou" age="20" gender="male">example</fuga>
</hoge>
####以下のように出力したいとします
id,1
name,tarou
age,20
gender,male
####以下のコードによって出力することが出来ます
package example;
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class example {
public static void main(String[] args) {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new File("example.xml"));
Element hoge = doc.getDocumentElement();
NodeList fugaList = hoge.getChildNodes();
for(int i=0; i<fugaList.getLength(); i++) {
Node fuga = fugaList.item(i);
if(fuga.getNodeType()==Node.ELEMENT_NODE) {
// ここで、attributeの一覧を取得します
NamedNodeMap nnm = fuga.getAttributes();
for(int j=0; j<nnm.getLength(); j++) {
Node fugaNameNode = nnm.item(j);/
// attributeとvalueを出力します
System.out.println(fugaNameNode.getNodeName()+","+fugaNameNode.getNodeValue());
}
}
}
} catch(Exception e) {
e.printStackTrace();
}
}
}
####結果
age,20
gender,male
id,1
name,tarou
####追記
出力順序が一致していないっぽいです。
NamedNodeMapは順序を担保していない様子