Package org.restlet.ext.xml
Class XmlRepresentation
- java.lang.Object
-
- org.restlet.representation.Variant
-
- org.restlet.representation.RepresentationInfo
-
- org.restlet.representation.Representation
-
- org.restlet.representation.CharacterRepresentation
-
- org.restlet.representation.WriterRepresentation
-
- org.restlet.ext.xml.XmlRepresentation
-
- All Implemented Interfaces:
javax.xml.namespace.NamespaceContext
- Direct Known Subclasses:
DomRepresentation
,SaxRepresentation
public abstract class XmlRepresentation extends org.restlet.representation.WriterRepresentation implements javax.xml.namespace.NamespaceContext
Representation based on an XML document. It knows how to evaluate XPath expressions and how to manage a namespace context. This class also offers convenient methods to validate the document against a specified XML scheme.
SECURITY WARNING: Using XML parsers configured to not prevent nor limit document type definition (DTD) entity resolution can expose the parser to an XML Entity Expansion injection attack.- Author:
- Jerome Louvel
- See Also:
- XML Entity Expansion injection attack
-
-
Field Summary
Fields Modifier and Type Field Description static boolean
XML_EXPANDING_ENTITY_REFS
True for expanding entity references when parsing XML representations; default value provided by system property "org.restlet.ext.xml.expandingEntityRefs", false by default.static boolean
XML_VALIDATING_DTD
True for validating DTD documents when parsing XML representations; default value provided by system property "org.restlet.ext.xml.validatingDtd", false by default.
-
Constructor Summary
Constructors Constructor Description XmlRepresentation(org.restlet.data.MediaType mediaType)
Constructor.XmlRepresentation(org.restlet.data.MediaType mediaType, long expectedSize)
Constructor.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description java.lang.Boolean
getBoolean(java.lang.String expression)
Evaluates an XPath expression as a boolean.protected org.w3c.dom.Document
getDocument()
Returns the XML representation as a DOM document.protected javax.xml.parsers.DocumentBuilder
getDocumentBuilder()
Returns a document builder properly configured.javax.xml.transform.dom.DOMSource
getDomSource()
Returns a DOM source.org.xml.sax.EntityResolver
getEntityResolver()
Return the possibly null current SAXEntityResolver
.org.xml.sax.ErrorHandler
getErrorHandler()
Return the possibly null current SAXErrorHandler
.abstract org.xml.sax.InputSource
getInputSource()
Returns the XML representation as a SAX input source.java.util.Map<java.lang.String,java.lang.String>
getNamespaces()
Returns the map of namespaces.java.lang.String
getNamespaceURI(java.lang.String prefix)
{@inheritDoc javax.xml.namespace.NamespaceContext#getNamespaceURI(java.lang.String}org.w3c.dom.Node
getNode(java.lang.String expression)
Evaluates an XPath expression as a DOM Node.NodeList
getNodes(java.lang.String expression)
Evaluates an XPath expression as a DOM NodeList.java.lang.Double
getNumber(java.lang.String expression)
Evaluates an XPath expression as a number.java.lang.String
getPrefix(java.lang.String namespaceURI)
{@inheritDoc javax.xml.namespace.NamespaceContext#getPrefix(java.lang.String}java.util.Iterator<java.lang.String>
getPrefixes(java.lang.String namespaceURI)
{@inheritDoc javax.xml.namespace.NamespaceContext#getPrefixes(java.lang.String}javax.xml.transform.sax.SAXSource
getSaxSource()
Returns a SAX source.static javax.xml.transform.sax.SAXSource
getSaxSource(org.restlet.representation.Representation xmlRepresentation)
Returns a SAX source.javax.xml.validation.Schema
getSchema()
Return the possibly nullSchema
to use for this type of XML representations.javax.xml.transform.stream.StreamSource
getStreamSource()
Returns a stream of XML markup.java.lang.String
getText(java.lang.String expression)
Evaluates an XPath expression as a string.boolean
isCoalescing()
Indicates if the parser should be coalescing text.boolean
isExpandingEntityRefs()
Indicates if the parser will expand entity reference nodes.boolean
isIgnoringComments()
Indicates if the parser will ignore comments.boolean
isIgnoringExtraWhitespaces()
Indicates if the parser will ignore extra white spaces in element content.boolean
isNamespaceAware()
Indicates if processing is namespace aware.boolean
isValidatingDtd()
Indicates the desire for validating this type of XML representations against an XML schema if one is referenced within the contents.boolean
isXIncludeAware()
Indicates the desire for processing XInclude if found in this type of XML representations.void
release()
Releases the namespaces map.void
setCoalescing(boolean coalescing)
Indicates if the parser should be coalescing text.void
setEntityResolver(org.xml.sax.EntityResolver entityResolver)
Set theEntityResolver
to use when resolving external entity references encountered in this type of XML representations.void
setErrorHandler(org.xml.sax.ErrorHandler errorHandler)
Set theErrorHandler
to use when signaling SAX event exceptions.void
setExpandingEntityRefs(boolean expandEntityRefs)
Indicates if the parser will expand entity reference nodes.void
setIgnoringComments(boolean ignoringComments)
Indicates if the parser will ignore comments.void
setIgnoringExtraWhitespaces(boolean ignoringExtraWhitespaces)
Indicates if the parser will ignore extra white spaces in element content.void
setNamespaceAware(boolean namespaceAware)
Indicates if processing is namespace aware.void
setNamespaces(java.util.Map<java.lang.String,java.lang.String> namespaces)
Sets the map of namespaces.void
setSchema(javax.xml.validation.Schema schema)
Set a (compiled)Schema
to use when parsing and validating this type of XML representations.void
setSchema(org.restlet.representation.Representation schemaRepresentation)
Set a schema representation to be compiled and used when parsing and validating this type of XML representations.void
setValidatingDtd(boolean validating)
Indicates the desire for validating this type of XML representations against an XML schema if one is referenced within the contents.void
setXIncludeAware(boolean includeAware)
Indicates the desire for processing XInclude if found in this type of XML representations.void
validate(javax.xml.validation.Schema schema)
Validates the XML representation against a given schema.void
validate(javax.xml.validation.Schema schema, javax.xml.transform.Result result)
Validates the XML representation against a given schema.void
validate(org.restlet.representation.Representation schemaRepresentation)
Validates the XML representation against a given schema.void
validate(org.restlet.representation.Representation schemaRepresentation, javax.xml.transform.Result result)
Validates the XML representation against a given schema.-
Methods inherited from class org.restlet.representation.CharacterRepresentation
getChannel, getStream, write, write
-
Methods inherited from class org.restlet.representation.Representation
append, exhaust, getAvailableSize, getDigest, getDisposition, getExpirationDate, getRange, getRegistration, getSize, getText, hasKnownSize, isAvailable, isEmpty, isSelectable, isTransient, setAvailable, setDigest, setDisposition, setExpirationDate, setListener, setRange, setSize, setTransient, write
-
Methods inherited from class org.restlet.representation.RepresentationInfo
getModificationDate, getTag, setModificationDate, setTag
-
-
-
-
Field Detail
-
XML_EXPANDING_ENTITY_REFS
public static final boolean XML_EXPANDING_ENTITY_REFS
True for expanding entity references when parsing XML representations; default value provided by system property "org.restlet.ext.xml.expandingEntityRefs", false by default.
-
XML_VALIDATING_DTD
public static final boolean XML_VALIDATING_DTD
True for validating DTD documents when parsing XML representations; default value provided by system property "org.restlet.ext.xml.validatingDtd", false by default.
-
-
Constructor Detail
-
XmlRepresentation
public XmlRepresentation(org.restlet.data.MediaType mediaType)
Constructor.- Parameters:
mediaType
- The representation's mediaType.
-
XmlRepresentation
public XmlRepresentation(org.restlet.data.MediaType mediaType, long expectedSize)
Constructor.- Parameters:
mediaType
- The representation's mediaType.expectedSize
- The expected input stream size.
-
-
Method Detail
-
getSaxSource
public static javax.xml.transform.sax.SAXSource getSaxSource(org.restlet.representation.Representation xmlRepresentation) throws java.io.IOException
Returns a SAX source.- Parameters:
xmlRepresentation
- The XML representation to wrap.- Returns:
- A SAX source.
- Throws:
java.io.IOException
-
getBoolean
public java.lang.Boolean getBoolean(java.lang.String expression)
Evaluates an XPath expression as a boolean. If the evaluation fails, null will be returned.- Returns:
- The evaluation result.
-
getDocument
protected org.w3c.dom.Document getDocument() throws java.lang.Exception
Returns the XML representation as a DOM document.- Returns:
- The DOM document.
- Throws:
java.lang.Exception
-
getDocumentBuilder
protected javax.xml.parsers.DocumentBuilder getDocumentBuilder() throws java.io.IOException
Returns a document builder properly configured.- Returns:
- A document builder properly configured.
- Throws:
java.io.IOException
-
getDomSource
public javax.xml.transform.dom.DOMSource getDomSource() throws java.io.IOException
Returns a DOM source.- Returns:
- A DOM source.
- Throws:
java.io.IOException
-
getEntityResolver
public org.xml.sax.EntityResolver getEntityResolver()
Return the possibly null current SAXEntityResolver
.- Returns:
- The possibly null current SAX
EntityResolver
.
-
getErrorHandler
public org.xml.sax.ErrorHandler getErrorHandler()
Return the possibly null current SAXErrorHandler
.- Returns:
- The possibly null current SAX
ErrorHandler
.
-
getInputSource
public abstract org.xml.sax.InputSource getInputSource() throws java.io.IOException
Returns the XML representation as a SAX input source.- Returns:
- The SAX input source.
- Throws:
java.io.IOException
-
getNamespaces
public java.util.Map<java.lang.String,java.lang.String> getNamespaces()
Returns the map of namespaces. Namespace prefixes are keys and URI references are values.- Returns:
- The map of namespaces.
-
getNamespaceURI
public java.lang.String getNamespaceURI(java.lang.String prefix)
{@inheritDoc javax.xml.namespace.NamespaceContext#getNamespaceURI(java.lang.String}- Specified by:
getNamespaceURI
in interfacejavax.xml.namespace.NamespaceContext
-
getNode
public org.w3c.dom.Node getNode(java.lang.String expression)
Evaluates an XPath expression as a DOM Node. If the evaluation fails, null will be returned.- Returns:
- The evaluation result.
-
getNodes
public NodeList getNodes(java.lang.String expression)
Evaluates an XPath expression as a DOM NodeList. If the evaluation fails, null will be returned.- Returns:
- The evaluation result.
-
getNumber
public java.lang.Double getNumber(java.lang.String expression)
Evaluates an XPath expression as a number. If the evaluation fails, null will be returned.- Returns:
- The evaluation result.
-
getPrefix
public java.lang.String getPrefix(java.lang.String namespaceURI)
{@inheritDoc javax.xml.namespace.NamespaceContext#getPrefix(java.lang.String}- Specified by:
getPrefix
in interfacejavax.xml.namespace.NamespaceContext
-
getPrefixes
public java.util.Iterator<java.lang.String> getPrefixes(java.lang.String namespaceURI)
{@inheritDoc javax.xml.namespace.NamespaceContext#getPrefixes(java.lang.String}- Specified by:
getPrefixes
in interfacejavax.xml.namespace.NamespaceContext
-
getSaxSource
public javax.xml.transform.sax.SAXSource getSaxSource() throws java.io.IOException
Returns a SAX source.- Returns:
- A SAX source.
- Throws:
java.io.IOException
-
getSchema
public javax.xml.validation.Schema getSchema()
Return the possibly nullSchema
to use for this type of XML representations.- Returns:
- the
Schema
object of this type of XML representations.
-
getStreamSource
public javax.xml.transform.stream.StreamSource getStreamSource() throws java.io.IOException
Returns a stream of XML markup.- Returns:
- A stream of XML markup.
- Throws:
java.io.IOException
-
getText
public java.lang.String getText(java.lang.String expression)
Evaluates an XPath expression as a string.- Returns:
- The evaluation result.
-
isCoalescing
public boolean isCoalescing()
Indicates if the parser should be coalescing text. If true the parser will convert CDATA nodes to text nodes and append it to the adjacent (if any) text node. By default the value of this is set to false.- Returns:
- True if parser should be coalescing text.
-
isExpandingEntityRefs
public boolean isExpandingEntityRefs()
Indicates if the parser will expand entity reference nodes. By default the value of this is set to true.- Returns:
- True if the parser will expand entity reference nodes.
-
isIgnoringComments
public boolean isIgnoringComments()
Indicates if the parser will ignore comments. By default the value of this is set to false.- Returns:
- True if the parser will ignore comments.
-
isIgnoringExtraWhitespaces
public boolean isIgnoringExtraWhitespaces()
Indicates if the parser will ignore extra white spaces in element content. Note that theisValidatingDtd()
must be true when this property is 'true' as validation is needed for it to work. By default the value of this is set to false.- Returns:
- True if the parser will ignore extra white spaces.
-
isNamespaceAware
public boolean isNamespaceAware()
Indicates if processing is namespace aware.- Returns:
- True if processing is namespace aware.
-
isValidatingDtd
public boolean isValidatingDtd()
Indicates the desire for validating this type of XML representations against an XML schema if one is referenced within the contents.- Returns:
- True if the schema-based validation is enabled.
-
isXIncludeAware
public boolean isXIncludeAware()
Indicates the desire for processing XInclude if found in this type of XML representations. By default the value of this is set to false.- Returns:
- The current value of the xIncludeAware flag.
-
release
public void release()
Releases the namespaces map.- Overrides:
release
in classorg.restlet.representation.Representation
-
setCoalescing
public void setCoalescing(boolean coalescing)
Indicates if the parser should be coalescing text. If true the parser will convert CDATA nodes to text nodes and append it to the adjacent (if any) text node. By default the value of this is set to false.- Parameters:
coalescing
- True if parser should be coalescing text.
-
setEntityResolver
public void setEntityResolver(org.xml.sax.EntityResolver entityResolver)
Set theEntityResolver
to use when resolving external entity references encountered in this type of XML representations.- Parameters:
entityResolver
- theEntityResolver
to set.
-
setErrorHandler
public void setErrorHandler(org.xml.sax.ErrorHandler errorHandler)
Set theErrorHandler
to use when signaling SAX event exceptions.- Parameters:
errorHandler
- theErrorHandler
to set.
-
setExpandingEntityRefs
public void setExpandingEntityRefs(boolean expandEntityRefs)
Indicates if the parser will expand entity reference nodes. By default the value of this is set to true.- Parameters:
expandEntityRefs
- True if the parser will expand entity reference nodes.
-
setIgnoringComments
public void setIgnoringComments(boolean ignoringComments)
Indicates if the parser will ignore comments. By default the value of this is set to false.- Parameters:
ignoringComments
- True if the parser will ignore comments.
-
setIgnoringExtraWhitespaces
public void setIgnoringExtraWhitespaces(boolean ignoringExtraWhitespaces)
Indicates if the parser will ignore extra white spaces in element content. Note that thesetValidatingDtd(boolean)
will be invoked with 'true' if setting this property to 'true' as validation is needed for it to work.- Parameters:
ignoringExtraWhitespaces
- True if the parser will ignore extra white spaces in element content.
-
setNamespaceAware
public void setNamespaceAware(boolean namespaceAware)
Indicates if processing is namespace aware.- Parameters:
namespaceAware
- Indicates if processing is namespace aware.
-
setNamespaces
public void setNamespaces(java.util.Map<java.lang.String,java.lang.String> namespaces)
Sets the map of namespaces.- Parameters:
namespaces
- The map of namespaces.
-
setSchema
public void setSchema(javax.xml.validation.Schema schema)
Set a (compiled)Schema
to use when parsing and validating this type of XML representations.- Parameters:
schema
- The (compiled)Schema
object to set.
-
setSchema
public void setSchema(org.restlet.representation.Representation schemaRepresentation)
Set a schema representation to be compiled and used when parsing and validating this type of XML representations.- Parameters:
schemaRepresentation
- The schema representation to set.
-
setValidatingDtd
public void setValidatingDtd(boolean validating)
Indicates the desire for validating this type of XML representations against an XML schema if one is referenced within the contents.- Parameters:
validating
- The new validation flag to set.
-
setXIncludeAware
public void setXIncludeAware(boolean includeAware)
Indicates the desire for processing XInclude if found in this type of XML representations. By default the value of this is set to false.- Parameters:
includeAware
- The new value of the xIncludeAware flag.
-
validate
public void validate(javax.xml.validation.Schema schema) throws java.lang.Exception
Validates the XML representation against a given schema.- Parameters:
schema
- The XML schema to use.- Throws:
java.lang.Exception
-
validate
public void validate(javax.xml.validation.Schema schema, javax.xml.transform.Result result) throws java.lang.Exception
Validates the XML representation against a given schema.- Parameters:
schema
- The XML schema to use.result
- The Result object that receives (possibly augmented) XML.- Throws:
java.lang.Exception
-
validate
public void validate(org.restlet.representation.Representation schemaRepresentation) throws java.lang.Exception
Validates the XML representation against a given schema.- Parameters:
schemaRepresentation
- The XML schema representation to use.- Throws:
java.lang.Exception
-
validate
public void validate(org.restlet.representation.Representation schemaRepresentation, javax.xml.transform.Result result) throws java.lang.Exception
Validates the XML representation against a given schema.- Parameters:
schemaRepresentation
- The XML schema representation to use.result
- The Result object that receives (possibly augmented) XML.- Throws:
java.lang.Exception
-
-