- java.lang.Object
-
- org.joox.JOOX
-
public final class JOOX extends java.lang.Object
- Author:
- Lukas Eder
-
-
Constructor Summary
Constructors Constructor Description JOOX()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static Match
$()
Wrap a new empty documentstatic Match
$(java.io.File file)
Read a DOM document from a file into aMatch
element setstatic Match
$(java.io.InputStream stream)
Read a DOM document from a stream into aMatch
element setstatic Match
$(java.io.Reader reader)
Read a DOM document from a reader into aMatch
element setstatic Match
$(java.lang.Object object)
Wrap a JAXB-marshallable element in a jOOXMatch
element setstatic Match
$(java.lang.String name)
Create a new DOM element in an independent documentstatic Match
$(java.lang.String name, java.lang.String content)
Create a new DOM element in an independent documentstatic Match
$(java.lang.String name, Match... content)
Create a new DOM element in an independent documentstatic Match
$(java.lang.String name, org.w3c.dom.Element... content)
Create a new DOM element in an independent documentstatic Match
$(java.net.URI uri)
Convenience method for calling$(new File(uri))
static Match
$(java.net.URL url)
Convenience method for calling$(url.openStream())
static Match
$(Context context)
Convenience method for calling$(context.element())
static Match
$(Match match)
Convenience method for calling$(match)
static Match
$(org.w3c.dom.Document document)
Wrap a DOM document in a jOOXMatch
element setstatic Match
$(org.w3c.dom.Element element)
Wrap a DOM element in a jOOXMatch
element setstatic Match
$(org.w3c.dom.Node node)
Wrap a DOMNode
in a jOOXMatch
element setstatic Match
$(org.w3c.dom.NodeList list)
Wrap a DOMNodeList
in a jOOXMatch
element setstatic Match
$(org.xml.sax.InputSource source)
Read a DOM document from a file into aMatch
element setstatic FastFilter
all()
A filter that always returns truestatic Filter
and(Filter... filters)
Combine filtersstatic FastFilter
at(int... indexes)
A filter that returns true on elements at given iteration indexesstatic FastFilter
attr(java.lang.String name)
A filter that returns all elements with a given attributestatic FastFilter
attr(java.lang.String name, java.lang.String... values)
A filter that returns all elements with a given attribute being set to a given valuestatic Mapper<java.lang.String>
attrs(java.lang.String attributeName)
Create a mapper that returns all attributes with a given namestatic javax.xml.parsers.DocumentBuilder
builder()
Get a namespace-aware document builderstatic Each
chain(java.lang.Iterable<? extends Each> each)
Chain several instances ofEach
into a single one.static Each
chain(Each... each)
Chain several instances ofEach
into a single one.static Content
content(java.lang.Object value)
Get a constant content that returns a marshalled, JAXB-annotatedvalue
for all elements.static Content
content(java.lang.String value)
Get a constant content that returns the samevalue
for all elements.static <T> T
convert(java.lang.String value, java.lang.Class<T> type)
Convert a string value to any of these types:String
: The conversion has no effectByte
: Numeric conversion.static <T> java.util.List<T>
convert(java.util.List<java.lang.String> values, java.lang.Class<T> type)
Convert several valuesstatic FastFilter
even()
A filter that returns true on all even iteration indexes (starting with 0!)static Mapper<java.lang.String>
ids()
Create a mapper that returns allid
attributesstatic FastFilter
ids(java.lang.String... ids)
Create a filter matching id attributesstatic java.lang.Iterable<org.w3c.dom.Element>
iterable(org.w3c.dom.NodeList elements)
Wrap aNodeList
into anIterable
static java.util.Iterator<org.w3c.dom.Element>
iterator(org.w3c.dom.NodeList elements)
Wrap aNodeList
into anIterator
static FastFilter
leaf()
A filter that returns true on leaf elementsstatic java.util.List<org.w3c.dom.Element>
list(org.w3c.dom.NodeList elements)
Wrap aNodeList
into anList
static FastFilter
matchAttr(java.lang.String name, java.lang.String valueRegex)
A filter that returns all elements whose text content matches a given regexstatic FastFilter
matchTag(java.lang.String regex)
A filter that returns all elements whose tag name matches a given regexstatic FastFilter
matchTag(java.lang.String regex, boolean ignoreNamespace)
A filter that returns all elements whose tag name matches a given regexstatic FastFilter
matchText(java.lang.String regex)
A filter that returns all elements whose text content matches a given regexstatic FastFilter
namespacePrefix(java.lang.String namespacePrefix)
A filter that returns all elements with a given namespace prefixstatic FastFilter
namespaceURI(java.lang.String namespaceURI)
A filter that returns all elements with a given namespace URIstatic FastFilter
none()
A filter that always returns falsestatic Filter
not(Filter filter)
Inverse a filterstatic FastFilter
odd()
A filter that returns true on all odd iteration indexes (starting with 0!)static Filter
or(Filter... filters)
Combine filtersstatic Mapper<java.lang.String>
paths()
Create a mapper that returns all paths to given elementsstatic Filter
selector(java.lang.String selector)
A filter that returns all elements matched by a given selector.static FastFilter
tag(java.lang.String tagName)
A filter that returns all elements with a given tag namestatic FastFilter
tag(java.lang.String tagName, boolean ignoreNamespace)
A filter that returns all elements with a given tag name
-
-
-
Method Detail
-
$
public static Match $()
Wrap a new empty document
-
$
public static Match $(java.lang.Object object)
Wrap a JAXB-marshallable element in a jOOXMatch
element set- See Also:
content(Object)
,Match.content(Object)
-
$
public static Match $(java.lang.String name)
Create a new DOM element in an independent document
-
$
public static Match $(java.lang.String name, java.lang.String content)
Create a new DOM element in an independent document
-
$
public static Match $(java.lang.String name, org.w3c.dom.Element... content)
Create a new DOM element in an independent documentThe added content is cloned into the new document
-
$
public static Match $(java.lang.String name, Match... content)
Create a new DOM element in an independent documentThe added content is cloned into the new document
-
$
public static Match $(org.w3c.dom.Document document)
Wrap a DOM document in a jOOXMatch
element set
-
$
public static Match $(org.w3c.dom.Element element)
Wrap a DOM element in a jOOXMatch
element set
-
$
public static Match $(org.w3c.dom.Node node)
Wrap a DOMNode
in a jOOXMatch
element setSupported node types are
-
Document
: see$(Document)
-
Element
: see$(Element)
-
-
$
public static Match $(org.w3c.dom.NodeList list)
Wrap a DOMNodeList
in a jOOXMatch
element setIf the supplied NodeList is empty or null, then an empty Match is created
-
$
public static Match $(java.net.URL url) throws org.xml.sax.SAXException, java.io.IOException
Convenience method for calling$(url.openStream())
- Throws:
org.xml.sax.SAXException
java.io.IOException
-
$
public static Match $(java.net.URI uri) throws org.xml.sax.SAXException, java.io.IOException
Convenience method for calling$(new File(uri))
- Throws:
org.xml.sax.SAXException
java.io.IOException
-
$
public static Match $(java.io.File file) throws org.xml.sax.SAXException, java.io.IOException
Read a DOM document from a file into aMatch
element set- Throws:
java.io.IOException
org.xml.sax.SAXException
-
$
public static Match $(java.io.InputStream stream) throws org.xml.sax.SAXException, java.io.IOException
Read a DOM document from a stream into aMatch
element set- Throws:
java.io.IOException
org.xml.sax.SAXException
-
$
public static Match $(java.io.Reader reader) throws org.xml.sax.SAXException, java.io.IOException
Read a DOM document from a reader into aMatch
element set- Throws:
java.io.IOException
org.xml.sax.SAXException
-
$
public static Match $(org.xml.sax.InputSource source) throws org.xml.sax.SAXException, java.io.IOException
Read a DOM document from a file into aMatch
element set- Throws:
java.io.IOException
org.xml.sax.SAXException
-
none
public static FastFilter none()
A filter that always returns false
-
all
public static FastFilter all()
A filter that always returns true
-
even
public static FastFilter even()
A filter that returns true on all even iteration indexes (starting with 0!)
-
odd
public static FastFilter odd()
A filter that returns true on all odd iteration indexes (starting with 0!)
-
leaf
public static FastFilter leaf()
A filter that returns true on leaf elements
-
at
public static FastFilter at(int... indexes)
A filter that returns true on elements at given iteration indexes
-
selector
public static Filter selector(java.lang.String selector)
A filter that returns all elements matched by a given selector.In most cases, this is the same as calling
tag(String)
. InMatch.find(String)
, the following CSS-style selector syntax elements are also supported:Selector pattern meaning * any element E an element of type E E[foo] an E element with a "foo" attribute E[foo="bar"] an E element whose "foo" attribute value is exactly equal to "bar" E[foo~="bar"] an E element whose "foo" attribute value is a list of whitespace-separated values, one of which is exactly equal to "bar" E[foo^="bar"] an E element whose "foo" attribute value begins exactly with the string "bar" E[foo$="bar"] an E element whose "foo" attribute value ends exactly with the string "bar" E[foo*="bar"] an E element whose "foo" attribute value contains the substring "bar" E[foo|="en"] an E element whose "foo" attribute has a hyphen-separated list of values beginning (from the left) with "en" E:root an E element, root of the document E:first-child an E element, first child of its parent E:last-child an E element, last child of its parent E:only-child an E element, only child of its parent E:empty an E element that has no children (including text nodes) E#myid an E element with ID equal to "myid". E F an F element descendant of an E element E > F an F element child of an E element E + F an F element immediately preceded by an E element E ~ F an F element preceded by an E element Note that due to the presence of pseudo selectors, such as
:root
,:empty
, etc, namespaces are not supported in selectors. Use jOOX's XPath functionality provided inMatch.xpath(String)
along withMatch.namespaces(java.util.Map)
if your XML document contains namespaces
-
tag
public static FastFilter tag(java.lang.String tagName)
A filter that returns all elements with a given tag nameThis is the same as calling
tag(tagName, true)
- See Also:
tag(String, boolean)
-
tag
public static FastFilter tag(java.lang.String tagName, boolean ignoreNamespace)
A filter that returns all elements with a given tag nameThis method allows for specifying whether namespace prefixes should be ignored. This is particularly useful in DOM Level 1 documents, which are namespace-unaware. In those methods
Document.getElementsByTagNameNS(String, String)
will not work, as elements do not contain anylocalName
.- Parameters:
tagName
- The tag name to match. Use * as a special tag name to match all tag namesignoreNamespace
- Whether namespace prefixes can be ignored. When set totrue
, then the namespace prefix is ignored. When set tofalse
, thentagName
must include the actual namespace prefix.
-
namespacePrefix
public static FastFilter namespacePrefix(java.lang.String namespacePrefix)
A filter that returns all elements with a given namespace prefixnull
and the empty string are treated equally to indicate that no namespace prefix should be present.
-
namespaceURI
public static FastFilter namespaceURI(java.lang.String namespaceURI)
A filter that returns all elements with a given namespace URInull
and the empty string are treated equally to indicate that no namespace URI should be present.This only works if the underlying document is namespace-aware
-
matchText
public static FastFilter matchText(java.lang.String regex)
A filter that returns all elements whose text content matches a given regex- See Also:
Pattern.matches(String, CharSequence)
-
matchAttr
public static FastFilter matchAttr(java.lang.String name, java.lang.String valueRegex)
A filter that returns all elements whose text content matches a given regex- See Also:
Pattern.matches(String, CharSequence)
-
matchTag
public static FastFilter matchTag(java.lang.String regex)
A filter that returns all elements whose tag name matches a given regexThis is the same as calling
matchTag(regex, true)
- See Also:
Pattern.matches(String, CharSequence)
-
matchTag
public static FastFilter matchTag(java.lang.String regex, boolean ignoreNamespace)
A filter that returns all elements whose tag name matches a given regexThis method allows for specifying whether namespace prefixes should be ignored. This is particularly useful in DOM Level 1 documents, which are namespace-unaware. In those methods
Document.getElementsByTagNameNS(String, String)
will not work, as elements do not contain anylocalName
.- Parameters:
regex
- The regular expression to use for matching tag names.ignoreNamespace
- Whether namespace prefixes can be ignored. When set totrue
, then the namespace prefix is ignored. When set tofalse
, thenregex
must also match potential namespace prefixes.- See Also:
Pattern.matches(String, CharSequence)
-
attr
public static FastFilter attr(java.lang.String name)
A filter that returns all elements with a given attribute
-
attr
public static FastFilter attr(java.lang.String name, java.lang.String... values)
A filter that returns all elements with a given attribute being set to a given value
-
ids
public static FastFilter ids(java.lang.String... ids)
Create a filter matching id attributes
-
content
public static Content content(java.lang.String value)
Get a constant content that returns the samevalue
for all elements.
-
content
public static Content content(java.lang.Object value)
Get a constant content that returns a marshalled, JAXB-annotatedvalue
for all elements.- See Also:
$(Object)
,Match.content(Object)
-
ids
public static Mapper<java.lang.String> ids()
Create a mapper that returns allid
attributes
-
attrs
public static Mapper<java.lang.String> attrs(java.lang.String attributeName)
Create a mapper that returns all attributes with a given name
-
paths
public static Mapper<java.lang.String> paths()
Create a mapper that returns all paths to given elements
-
chain
public static Each chain(Each... each)
Chain several instances ofEach
into a single one.The resulting chained
Each
produces a newEach
that can be used in theMatch.each(Each)
method. I.e. every node in a set of matched nodes will be passed to every chainedEach
, sequentially.
-
chain
public static Each chain(java.lang.Iterable<? extends Each> each)
Chain several instances ofEach
into a single one.The resulting chained
Each
produces a newEach
that can be used in theMatch.each(Each)
method. I.e. every node in a set of matched nodes will be passed to every chainedEach
, sequentially.
-
iterable
public static java.lang.Iterable<org.w3c.dom.Element> iterable(org.w3c.dom.NodeList elements)
Wrap aNodeList
into anIterable
-
iterator
public static java.util.Iterator<org.w3c.dom.Element> iterator(org.w3c.dom.NodeList elements)
Wrap aNodeList
into anIterator
-
list
public static java.util.List<org.w3c.dom.Element> list(org.w3c.dom.NodeList elements)
Wrap aNodeList
into anList
-
builder
public static javax.xml.parsers.DocumentBuilder builder()
Get a namespace-aware document builder
-
convert
public static <T> T convert(java.lang.String value, java.lang.Class<T> type)
Convert a string value to any of these types:-
String
: The conversion has no effect -
Byte
: Numeric conversion. NaN will return null -
Short
: Numeric conversion. NaN will return null -
Integer
: Numeric conversion. NaN will return null -
Long
: Numeric conversion. NaN will return null -
Float
: Numeric conversion. NaN will return null -
Double
: Numeric conversion. NaN will return null -
BigDecimal
: Numeric conversion. NaN will return null -
BigInteger
: Numeric conversion. NaN will return null -
Boolean
: Boolean conversion. Boolean values fortrue
are any of these case-insensitive strings:1
y
yes
true
on
enabled
false
are any of these case-insensitive strings:0
n
no
false
off
disabled
- Primitive types: Numeric or boolean conversion, except that
null
and illegal values will result in0
orfalse
-
Date
: Datetime conversion. -
Calendar
: Datetime conversion. -
GregorianCalendar
: Datetime conversion. -
Timestamp
: Datetime conversion. Possible patterns for datetime conversion areyyyy
: Only the year is parsedyyyy[-/]MM
: Year and month are parsed. Separator characters are optionalyyyy[-/]MM[-/]dd
: Date is parsed. Separator characters are optionaldd[-/.]MM[-/.]yyyy
: Date is parsed. Separator characters are mandatoryyyyy[-/]MM[-/]dd[T ]HH
: Date and hour are parsed. Separator characters are optionalyyyy[-/]MM[-/]dd[T ]HH[:]mm
: Date and time are parsed. Separator characters are optionalyyyy[-/]MM[-/]dd[T ]HH[:]mm[:]ss
: Date and time are parsed. Separator characters are optionalyyyy[-/]MM[-/]dd[T ]HH[:]mm[:]ss.SSS
: Date and time are parsed. Separator characters are optional
-
Date
: Date conversion. Possible patterns for date conversion areyyyy
: Only the year is parsedyyyy[-/]MM
: Year and month are parsed. Separator characters are optionalyyyy[-/]MM[-/]dd
: Date is parsed. Separator characters are optionaldd[-/.]MM[-/.]yyyy
: Date is parsed. Separator characters are mandatory
-
Time
: Time conversion. Possible patterns for time conversion areHH
: Hour is parsed. Separator characters are optionalHH[:]mm
: Hour and minute are parsed. Separator characters are optionalHH[:]mm[:]ss
: Time is parsed. Separator characters are optional
- Any of the above as array. Arrays of any type are split by any whitespace character, comma or semi-colon. String literals may be delimited by quotes as well.
All other values evaluate to
null
-
-
convert
public static <T> java.util.List<T> convert(java.util.List<java.lang.String> values, java.lang.Class<T> type)
Convert several values- See Also:
convert(String, Class)
-
-