OpenJDK 16.0.1
javac ReadXML.java
java ReadXML
name:taro
age:20
name:hanako
age:23
name:foobar
age:16
import java.io.ByteArrayInputStream; | |
import java.io.IOException; | |
import java.io.InputStream; | |
import java.nio.charset.StandardCharsets; | |
import java.util.ArrayList; | |
import java.util.List; | |
import javax.xml.parsers.DocumentBuilderFactory; | |
import javax.xml.parsers.ParserConfigurationException; | |
import org.w3c.dom.Element; | |
import org.xml.sax.SAXException; | |
public class ReadXML { | |
public static void main(String... args) { | |
var xml = | |
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n" + | |
"<people>\n" + | |
" <person age=\"20\" name=\"taro\"/>\n" + | |
" <person age=\"23\" name=\"hanako\"/>\n" + | |
" <person age=\"16\" name=\"foobar\"/>\n" + | |
"</people>"; | |
try (InputStream is = new ByteArrayInputStream(xml.getBytes(StandardCharsets.UTF_8))) { | |
var people = readXML(is); | |
people.stream().forEach(person -> { | |
System.out.println("name:"+person.name); | |
System.out.println("age:"+person.age); | |
}); | |
} catch (Exception e) {} | |
} | |
private static List<Person> readXML(InputStream inputStream) | |
throws ParserConfigurationException, IOException, SAXException { | |
var factory = DocumentBuilderFactory.newInstance(); | |
var builder = factory.newDocumentBuilder(); | |
var document = builder.parse(inputStream); | |
var root = document.getDocumentElement(); | |
var people = root.getElementsByTagName("person"); | |
List<Person> result = new ArrayList<>(); | |
for (var i = 0; i < people.getLength(); i++) { | |
var element = (Element) people.item(i); | |
var name = element.getAttribute("name"); | |
var age = Integer.parseInt(element.getAttribute("age")); | |
var person = new Person(name, age); | |
result.add(person); | |
} | |
return result; | |
} | |
} | |
class Person { | |
final String name; | |
final int age; | |
Person(String name, int age) { | |
this.name = name; | |
this.age = age; | |
} | |
} |