java.lang.Object
io.jenetics.xml.stream.Reader<T>
XML reader class, used for reading objects in XML format.
XML
<int-chromosome length="3">
<min>-2147483648</min>
<max>2147483647</max>
<alleles>
<allele>-1878762439</allele>
<allele>-957346595</allele>
<allele>-88668137</allele>
</alleles>
</int-chromosome>
Reader definition
final Reader<IntegerChromosome> reader =
elem(
(Object[] v) -> {
final int length = (int)v[0];
final int min = (int)v[1];
final int max = (int)v[2];
final List<Integer> alleles = (List<Integer>)v[3];
assert alleles.size() == length;
return IntegerChromosome.of(
alleles.stream()
.map(value -> IntegerGene.of(value, min, max))
.toArray(IntegerGene[]::new)
);
},
"int-chromosome",
attr("length").map(Integer::parseInt),
elem("min", text().map(Integer::parseInt)),
elem("max", text().map(Integer::parseInt)),
elem("alleles",
elems(elem("allele", text().map(Integer::parseInt)))
)
);
- Since:
- 3.9
- Version:
- 3.9
-
Method Summary
Modifier and TypeMethodDescriptionReturn aReaderfor reading an attribute of an element.static <T> Reader<T> Return aReaderwhich reads the value from the child elements of the given parent elementname.static <T> Reader<T> Return aReaderfor reading an object of typeTfrom the XML element with the givenname.Return aReaderwhich collects the elements, read by the given childreader, and returns it as a list of these elements.<B> Reader<B> Create a new reader for the new mapped typeB.abstract Tread(XMLStreamReader xml) Read the given type from the underlying XML streamreader.text()Return aReaderfor reading the text of an element.toString()
-
Method Details
-
read
Read the given type from the underlying XML streamreader.try (AutoCloseableXMLStreamReader xml = XML.reader(in)) { // Move XML stream to first the element. xml.next(); return reader.read(xml); }- Parameters:
xml- the underlying XML streamreader- Returns:
- the data read from the XML stream, maybe
null - Throws:
XMLStreamException- if an error occurs while reading the valueNullPointerException- if the givenxmlstream reader isnull
-
map
Create a new reader for the new mapped typeB.- Type Parameters:
B- the target type of the new reader- Parameters:
mapper- the mapper function- Returns:
- a new reader
- Throws:
NullPointerException- if the givenmapperfunction isnull
-
toString
-
attr
Return aReaderfor reading an attribute of an element.XML
<element length="3"/>Reader definitionfinal Reader<Integer> reader = elem( v -> (Integer)v[0], "element", attr("length").map(Integer::parseInt) );- Parameters:
name- the attribute name- Returns:
- an attribute reader
- Throws:
NullPointerException- if the givennameisnull
-
text
Return aReaderfor reading the text of an element.XML
<element>1234<element>Reader definitionfinal Reader<Integer> reader = elem( v -> (Integer)v[0], "element", text().map(Integer::parseInt) );- Returns:
- an element text reader
-
elem
public static <T> Reader<T> elem(Function<Object[], T> generator, String name, Reader<?>... children) Return aReaderfor reading an object of typeTfrom the XML element with the givenname.XML
<property name="size">1234<property>Reader definitionfinal Reader<Property> reader = elem( v -> { final String name = (String)v[0]; final Integer value = (Integer)v[1]; return Property.of(name, value); }, "property", attr("name"), text().map(Integer::parseInt) );- Type Parameters:
T- the reader result type- Parameters:
generator- the generator function, which build the result object from the given parameter arrayname- the name of the root (subtree) elementchildren- the child element reader, which creates the values forwarded to thegeneratorfunction- Returns:
- a node reader
- Throws:
NullPointerException- if one of the given arguments isnullIllegalArgumentException- if the given child readers contains more than one text reader
-
elem
Return aReaderwhich reads the value from the child elements of the given parent elementname.XML
Reader definition<min><property name="size">1234<property></min>final Reader<Property> reader = elem("min", elem( v -> { final String name = (String)v[0]; final Integer value = (Integer)v[1]; return Property.of(name, value); }, "property", attr("name"), text().map(Integer::parseInt) ) );- Type Parameters:
T- the result type- Parameters:
name- the parent element namereader- the child elements reader- Returns:
- a node reader
- Throws:
NullPointerException- if one of the given arguments isnull
-
elems
Return aReaderwhich collects the elements, read by the given childreader, and returns it as a list of these elements.XML
Reader definition<properties length="3"> <property>-1878762439</property> <property>-957346595</property> <property>-88668137</property> </properties>Reader<List<Integer>> reader = elem( v -> (List<Integer>)v[0], "properties", elems(elem("property", text().map(Integer::parseInt))) );- Type Parameters:
T- the element type- Parameters:
reader- the child element reader- Returns:
- a list reader
-