public final class JOOX extends Object
Constructor and Description |
---|
JOOX() |
Modifier and Type | Method and Description |
---|---|
static Match |
$()
Wrap a new empty document
|
static Match |
$(Context context)
Convenience method for calling
$(context.element()) |
static Match |
$(Document document)
Wrap a DOM document in a jOOX
Match element set |
static Match |
$(Element element)
Wrap a DOM element in a jOOX
Match element set |
static Match |
$(File file)
Read a DOM document from a file into a
Match element set |
static Match |
$(InputSource source)
Read a DOM document from a file into a
Match element set |
static Match |
$(InputStream stream)
Read a DOM document from a stream into a
Match element set |
static Match |
$(Match match)
Convenience method for calling
$(match) |
static Match |
$(Node node)
Wrap a DOM
Node in a jOOX Match element set
Supported node types are
Document : see $(Document)
Element : see $(Element)
If the supplied Node is of any other type, then an empty Match is created |
static Match |
$(NodeList list)
|
static Match |
$(Object object)
Wrap a JAXB-marshallable element in a jOOX
Match element set |
static Match |
$(Reader reader)
Read a DOM document from a reader into a
Match element set |
static Match |
$(String name)
Create a new DOM element in an independent document
|
static Match |
$(String name,
Element... content)
Create a new DOM element in an independent document
The added content is cloned into the new document
|
static Match |
$(String name,
Match... content)
Create a new DOM element in an independent document
The added content is cloned into the new document
|
static Match |
$(String name,
String content)
Create a new DOM element in an independent document
|
static Match |
$(URI uri)
Convenience method for calling
$(new File(uri)) |
static Match |
$(URL url)
Convenience method for calling
$(url.openStream()) |
static FastFilter |
all()
A filter that always returns true
|
static Filter |
and(Filter... filters)
Combine filters
|
static FastFilter |
at(int... indexes)
A filter that returns true on elements at given iteration indexes
|
static FastFilter |
attr(String name)
A filter that returns all elements with a given attribute
|
static FastFilter |
attr(String name,
String... values)
A filter that returns all elements with a given attribute being set to a
given value
|
static Mapper<String> |
attrs(String attributeName)
Create a mapper that returns all attributes with a given name
|
static DocumentBuilder |
builder()
Get a namespace-aware document builder
|
static Each |
chain(Each... each)
Chain several instances of
Each into a single one. |
static Each |
chain(Iterable<? extends Each> each)
Chain several instances of
Each into a single one. |
static Content |
content(Object value)
Get a constant content that returns a marshalled, JAXB-annotated
value for all elements. |
static Content |
content(String value)
Get a constant content that returns the same
value for all
elements. |
static <T> List<T> |
convert(List<String> values,
Class<T> type)
Convert several values
|
static <T> T |
convert(String value,
Class<T> type)
|
static FastFilter |
even()
A filter that returns true on all even iteration indexes (starting with
0!)
|
static Mapper<String> |
ids()
Create a mapper that returns all
id attributes |
static FastFilter |
ids(String... ids)
Create a filter matching id attributes
|
static Iterable<Element> |
iterable(NodeList elements)
|
static Iterator<Element> |
iterator(NodeList elements)
|
static FastFilter |
leaf()
A filter that returns true on leaf elements
|
static List<Element> |
list(NodeList elements)
|
static FastFilter |
matchAttr(String name,
String valueRegex)
A filter that returns all elements whose text content matches a given
regex
|
static FastFilter |
matchTag(String regex)
A filter that returns all elements whose tag name matches a given regex
This is the same as calling
matchTag(regex, true) |
static FastFilter |
matchTag(String regex,
boolean ignoreNamespace)
A filter that returns all elements whose tag name matches a given regex
This method allows for specifying whether namespace prefixes should be
ignored.
|
static FastFilter |
matchText(String regex)
A filter that returns all elements whose text content matches a given
regex
|
static FastFilter |
namespacePrefix(String namespacePrefix)
A filter that returns all elements with a given namespace prefix
null and the empty string are treated equally to indicate
that no namespace prefix should be present. |
static FastFilter |
namespaceURI(String namespaceURI)
A filter that returns all elements with a given namespace URI
null and the empty string are treated equally to indicate
that no namespace URI should be present. |
static FastFilter |
none()
A filter that always returns false
|
static Filter |
not(Filter filter)
Inverse a filter
|
static FastFilter |
odd()
A filter that returns true on all odd iteration indexes (starting with
0!)
|
static Filter |
or(Filter... filters)
Combine filters
|
static Mapper<String> |
paths()
Create a mapper that returns all paths to given elements
|
static Filter |
selector(String selector)
A filter that returns all elements matched by a given selector.
|
static FastFilter |
tag(String tagName)
A filter that returns all elements with a given tag name
This is the same as calling
tag(tagName, true) |
static FastFilter |
tag(String tagName,
boolean ignoreNamespace)
A filter that returns all elements with a given tag name
This method allows for specifying whether namespace prefixes should be
ignored.
|
public static Match $()
public static Match $(Object object)
Match
element setcontent(Object)
,
Match.content(Object)
public static Match $(String name, String content)
public static Match $(String name, Element... content)
The added content is cloned into the new document
public static Match $(String name, Match... content)
The added content is cloned into the new document
public static Match $(Node node)
Node
in a jOOX Match
element set
Supported node types are
Document
: see $(Document)
Element
: see $(Element)
public static Match $(URL url) throws SAXException, IOException
$(url.openStream())
SAXException
IOException
public static Match $(URI uri) throws SAXException, IOException
$(new File(uri))
SAXException
IOException
public static Match $(File file) throws SAXException, IOException
Match
element setIOException
SAXException
public static Match $(InputStream stream) throws SAXException, IOException
Match
element setIOException
SAXException
public static Match $(Reader reader) throws SAXException, IOException
Match
element setIOException
SAXException
public static Match $(InputSource source) throws SAXException, IOException
Match
element setIOException
SAXException
public static FastFilter none()
public static FastFilter all()
public static FastFilter even()
public static FastFilter odd()
public static FastFilter leaf()
public static FastFilter at(int... indexes)
public static Filter selector(String selector)
In most cases, this is the same as calling tag(String)
. In
Match.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 in
Match.xpath(String)
along with
Match.namespaces(java.util.Map)
if your XML document contains
namespaces
public static FastFilter tag(String tagName)
This is the same as calling tag(tagName, true)
tag(String, boolean)
public static FastFilter tag(String tagName, boolean ignoreNamespace)
This 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 any localName
.
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 to true
, then the namespace prefix is
ignored. When set to false
, then
tagName
must include the actual namespace prefix.public static FastFilter namespacePrefix(String namespacePrefix)
null
and the empty string are treated equally to indicate
that no namespace prefix should be present.
public static FastFilter namespaceURI(String namespaceURI)
null
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
public static FastFilter matchText(String regex)
Pattern.matches(String, CharSequence)
public static FastFilter matchAttr(String name, String valueRegex)
Pattern.matches(String, CharSequence)
public static FastFilter matchTag(String regex)
This is the same as calling matchTag(regex, true)
Pattern.matches(String, CharSequence)
public static FastFilter matchTag(String regex, boolean ignoreNamespace)
This 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 any localName
.
regex
- The regular expression to use for matching tag names.ignoreNamespace
- Whether namespace prefixes can be ignored. When
set to true
, then the namespace prefix is
ignored. When set to false
, then
regex
must also match potential namespace
prefixes.Pattern.matches(String, CharSequence)
public static FastFilter attr(String name)
public static FastFilter attr(String name, String... values)
public static FastFilter ids(String... ids)
public static Content content(String value)
value
for all
elements.public static Content content(Object value)
value
for all elements.$(Object)
,
Match.content(Object)
public static Mapper<String> attrs(String attributeName)
public static Each chain(Each... each)
Each
into a single one.
The resulting chained Each
produces a new Each
that can be used in the Match.each(Each)
method. I.e. every node
in a set of matched nodes will be passed to every chained
Each
, sequentially.
public static Each chain(Iterable<? extends Each> each)
Each
into a single one.
The resulting chained Each
produces a new Each
that can be used in the Match.each(Each)
method. I.e. every node
in a set of matched nodes will be passed to every chained
Each
, sequentially.
public static DocumentBuilder builder()
public static <T> T convert(String value, Class<T> type)
String
: The conversion has no effectByte
: Numeric conversion. NaN will return nullShort
: Numeric conversion. NaN will return nullInteger
: Numeric conversion. NaN will return nullLong
: Numeric conversion. NaN will return nullFloat
: Numeric conversion. NaN will return nullDouble
: Numeric conversion. NaN will return nullBigDecimal
: Numeric conversion. NaN will return nullBigInteger
: Numeric conversion. NaN will return nullBoolean
: Boolean conversion. Boolean values for
true
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
null
and illegal values will result in 0
or
false
Date
: Datetime conversion.Calendar
: Datetime conversion.GregorianCalendar
: Datetime conversion.Timestamp
: Datetime conversion. Possible patterns
for datetime conversion are
yyyy
: 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 optionalDate
: Date conversion. Possible patterns for date
conversion are
yyyy
: 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 mandatoryTime
: Time conversion. Possible patterns for time
conversion are
HH
: 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
All other values evaluate to null
public static <T> List<T> convert(List<String> values, Class<T> type)
convert(String, Class)
Copyright © 2015. All Rights Reserved.