次のようなxmlタグがあるとしましょう。
<test val="val1 ">Test XML</test>
<test>
配列に保存できるように、ファイルにタグが含まれるたびに値「val1」を解析したいと思います。
ファイルから XML をロードし、タグ名を持つすべての要素を選択して、test
そこから属性値を抽出できます。
基本的:
doc.getElementsByTagName("test")
すべての要素を選択するために、見つかった各要素に対して、テキスト コンテンツを取得するためだけに null でない場合は、この属性で指定さ"test"
れた属性を選択できます。"val"
node.getAttributes().getNamedItem("val")
getTextContent()
サンプル コードは次のようになります。
// temporary result list just to store the values found
ArrayList<String> result = new ArrayList<String>();
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document doc = documentBuilder.parse(new ByteArrayInputStream("<document><test val=\"val1\">Test XML</test><test val=\"val2\">Test XML</test><test val=\"val3\">Test XML</test></document>".getBytes()));
// you could use something like: documentBuilder.parse(new FileInputStream("fileName.ext")); instead
// get test nodes and iterate over it checking test attribute
NodeList elements = doc.getElementsByTagName("test");
for (int i = 0; i < elements.getLength(); i++) {
Node node = elements.item(i);
Node attribute = node.getAttributes().getNamedItem("val");
if (attribute != null) {
result.add(attribute.getTextContent());
}
}
// get result values in a string array (if collection is preferred use result instead)
String[] array = result.toArray(new String[] {});
// just print it in a readable format
System.out.println(Arrays.toString(array));
これは印刷されます:
[val1, val2, val3]