OpenJDK 16.0.1
javac ReadXML.java
java ReadXMLname: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; | |
| } | |
| } |