Java で xml ファイルから特定のタグの値を抽出するプログラムを作成した。
使い方は以下の通り。
例えば、以下の xml ファイルと、「name」を引数として与えると、
apple, lemon が抽出される。
<?xml version="1.0" encoding="UTF-8" ?> <foods> <food> <name>apple</name> <color>red</color> <name>lemon</name> <color>yellow</color> </food> </foods>
作成したプログラムは以下。ファイルを一行一行読み込みながら、正規表現で欲しい箇所を抽出している。
import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.util.regex.Matcher; import java.util.regex.Pattern; public class XmlTagValueReader { public static void main(String[] args) { String filePath = args[0]; String targetTag = args[1]; String start = ".*<" + targetTag + ".*>"; String end = "</" + targetTag + ">.*"; // 正規表現のAPIの使い方は以下を参照した。 // https://docs.oracle.com/javase/jp/8/docs/api/java/util/regex/Pattern.html String regex = start + "(.*)" + end; Pattern pattern = Pattern.compile(regex); try { File file = new File(filePath); BufferedReader br = new BufferedReader(new FileReader(file)); String line; while ((line = br.readLine()) != null) { Matcher matcher = pattern.matcher(line); if (matcher.matches()) { String value = matcher.group(1); System.out.println(value); } } br.close(); } catch (Exception e) { e.printStackTrace(); } } }
Java で xml ファイルを扱うということで、DOM や XPath などの API を使用することも考えたが、やりたいことはシンプルなので、それらのAPIは使用しなかった。