Package groovy.xml
Class XmlSlurper
java.lang.Object
org.xml.sax.helpers.DefaultHandler
groovy.xml.XmlSlurper
- All Implemented Interfaces:
org.xml.sax.ContentHandler,org.xml.sax.DTDHandler,org.xml.sax.EntityResolver,org.xml.sax.ErrorHandler
public class XmlSlurper
extends org.xml.sax.helpers.DefaultHandler
Parse XML into a document tree that may be traversed similar to XPath
expressions. For example:
import groovy.xml.XmlSlurper
def rootNode = new XmlSlurper().parseText(
'<root><one a1="uno!"/><two>Some text!</two></root>' )
assert rootNode.name() == 'root'
assert rootNode.one[0].@a1 == 'uno!'
assert rootNode.two.text() == 'Some text!'
rootNode.children().each { assert it.name() in ['one','two'] }
Note that in some cases, a 'selector' expression may not resolve to a single node. For example:
import groovy.xml.XmlSlurper
def rootNode = new XmlSlurper().parseText(
'''<root>
<a>one!</a>
<a>two!</a>
</root>''' )
assert rootNode.a.size() == 2
rootNode.a.each { assert it.text() in ['one!','two!'] }
- See Also:
GPathResult
-
Constructor Summary
Constructors Constructor Description XmlSlurper()Creates a non-validating and namespace-awareXmlSlurperwhich does not allow DOCTYPE declarations in documents.XmlSlurper(boolean validating, boolean namespaceAware)Creates aXmlSlurperwhich does not allow DOCTYPE declarations in documents.XmlSlurper(boolean validating, boolean namespaceAware, boolean allowDocTypeDeclaration)Creates aXmlSlurper.XmlSlurper(javax.xml.parsers.SAXParser parser)XmlSlurper(org.xml.sax.XMLReader reader) -
Method Summary
Modifier and Type Method Description voidcharacters(char[] ch, int start, int length)voidendDocument()voidendElement(java.lang.String namespaceURI, java.lang.String localName, java.lang.String qName)GPathResultgetDocument()org.xml.sax.DTDHandlergetDTDHandler()org.xml.sax.EntityResolvergetEntityResolver()org.xml.sax.ErrorHandlergetErrorHandler()booleangetFeature(java.lang.String uri)java.lang.ObjectgetProperty(java.lang.String uri)voidignorableWhitespace(char[] buffer, int start, int len)booleanisKeepIgnorableWhitespace()GPathResultparse(java.io.File file)Parses the content of the given file as XML turning it into a GPathResult objectGPathResultparse(java.io.InputStream input)Parse the content of the specified input stream into an GPathResult Object.GPathResultparse(java.io.Reader in)Parse the content of the specified reader into a GPathResult Object.GPathResultparse(java.lang.String uri)Parse the content of the specified URI into a GPathResult ObjectGPathResultparse(java.nio.file.Path path)GPathResultparse(org.xml.sax.InputSource input)Parse the content of the specified input source into a GPathResult objectGPathResultparseText(java.lang.String text)A helper method to parse the given text as XMLvoidsetDTDHandler(org.xml.sax.DTDHandler dtdHandler)voidsetEntityBaseUrl(java.net.URL base)Resolves entities against using the supplied URL as the base for relative URLsvoidsetEntityResolver(org.xml.sax.EntityResolver entityResolver)voidsetErrorHandler(org.xml.sax.ErrorHandler errorHandler)voidsetFeature(java.lang.String uri, boolean value)voidsetKeepIgnorableWhitespace(boolean keepIgnorableWhitespace)voidsetKeepWhitespace(boolean keepWhitespace)Deprecated.use setKeepIgnorableWhitespacevoidsetProperty(java.lang.String uri, java.lang.Object value)voidstartDocument()voidstartElement(java.lang.String namespaceURI, java.lang.String localName, java.lang.String qName, org.xml.sax.Attributes atts)voidstartPrefixMapping(java.lang.String tag, java.lang.String uri)Methods inherited from class org.xml.sax.helpers.DefaultHandler
endPrefixMapping, error, fatalError, notationDecl, processingInstruction, resolveEntity, setDocumentLocator, skippedEntity, unparsedEntityDecl, warningMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.xml.sax.ContentHandler
declaration
-
Constructor Details
-
XmlSlurper
public XmlSlurper() throws javax.xml.parsers.ParserConfigurationException, org.xml.sax.SAXExceptionCreates a non-validating and namespace-awareXmlSlurperwhich does not allow DOCTYPE declarations in documents.- Throws:
javax.xml.parsers.ParserConfigurationException- if no parser which satisfies the requested configuration can be created.org.xml.sax.SAXException- for SAX errors.
-
XmlSlurper
public XmlSlurper(boolean validating, boolean namespaceAware) throws javax.xml.parsers.ParserConfigurationException, org.xml.sax.SAXExceptionCreates aXmlSlurperwhich does not allow DOCTYPE declarations in documents.- Parameters:
validating-trueif the parser should validate documents as they are parsed; false otherwise.namespaceAware-trueif the parser should provide support for XML namespaces;falseotherwise.- Throws:
javax.xml.parsers.ParserConfigurationException- if no parser which satisfies the requested configuration can be created.org.xml.sax.SAXException- for SAX errors.
-
XmlSlurper
public XmlSlurper(boolean validating, boolean namespaceAware, boolean allowDocTypeDeclaration) throws javax.xml.parsers.ParserConfigurationException, org.xml.sax.SAXExceptionCreates aXmlSlurper.- Parameters:
validating-trueif the parser should validate documents as they are parsed; false otherwise.namespaceAware-trueif the parser should provide support for XML namespaces;falseotherwise.allowDocTypeDeclaration-trueif the parser should provide support for DOCTYPE declarations;falseotherwise.- Throws:
javax.xml.parsers.ParserConfigurationException- if no parser which satisfies the requested configuration can be created.org.xml.sax.SAXException- for SAX errors.
-
XmlSlurper
public XmlSlurper(org.xml.sax.XMLReader reader) -
XmlSlurper
public XmlSlurper(javax.xml.parsers.SAXParser parser) throws org.xml.sax.SAXException- Throws:
org.xml.sax.SAXException
-
-
Method Details
-
setKeepWhitespace
@Deprecated public void setKeepWhitespace(boolean keepWhitespace)Deprecated.use setKeepIgnorableWhitespace- Parameters:
keepWhitespace- If true then whitespace before elements is kept. The default is to discard the whitespace.
-
setKeepIgnorableWhitespace
public void setKeepIgnorableWhitespace(boolean keepIgnorableWhitespace)- Parameters:
keepIgnorableWhitespace- If true then ignorable whitespace (i.e. whitespace before elements) is kept. The default is to discard the whitespace.
-
isKeepIgnorableWhitespace
public boolean isKeepIgnorableWhitespace()- Returns:
- true if ignorable whitespace is kept
-
getDocument
- Returns:
- The GPathResult instance created by consuming a stream of SAX events Note if one of the parse methods has been called then this returns null Note if this is called more than once all calls after the first will return null
-
parse
public GPathResult parse(org.xml.sax.InputSource input) throws java.io.IOException, org.xml.sax.SAXExceptionParse the content of the specified input source into a GPathResult object- Parameters:
input- the InputSource to parse- Returns:
- An object which supports GPath expressions
- Throws:
org.xml.sax.SAXException- Any SAX exception, possibly wrapping another exception.java.io.IOException- An IO exception from the parser, possibly from a byte stream or character stream supplied by the application.
-
parse
Parses the content of the given file as XML turning it into a GPathResult object- Parameters:
file- the File to parse- Returns:
- An object which supports GPath expressions
- Throws:
org.xml.sax.SAXException- Any SAX exception, possibly wrapping another exception.java.io.IOException- An IO exception from the parser, possibly from a byte stream or character stream supplied by the application.
-
parse
public GPathResult parse(java.io.InputStream input) throws java.io.IOException, org.xml.sax.SAXExceptionParse the content of the specified input stream into an GPathResult Object. Note that using this method will not provide the parser with any URI for which to find DTDs etc. It is up to you to close the InputStream after parsing is complete (if required).- Parameters:
input- the InputStream to parse- Returns:
- An object which supports GPath expressions
- Throws:
org.xml.sax.SAXException- Any SAX exception, possibly wrapping another exception.java.io.IOException- An IO exception from the parser, possibly from a byte stream or character stream supplied by the application.
-
parse
Parse the content of the specified reader into a GPathResult Object. Note that using this method will not provide the parser with any URI for which to find DTDs etc. It is up to you to close the Reader after parsing is complete (if required).- Parameters:
in- the Reader to parse- Returns:
- An object which supports GPath expressions
- Throws:
org.xml.sax.SAXException- Any SAX exception, possibly wrapping another exception.java.io.IOException- An IO exception from the parser, possibly from a byte stream or character stream supplied by the application.
-
parse
public GPathResult parse(java.lang.String uri) throws java.io.IOException, org.xml.sax.SAXExceptionParse the content of the specified URI into a GPathResult Object- Parameters:
uri- a String containing the URI to parse- Returns:
- An object which supports GPath expressions
- Throws:
org.xml.sax.SAXException- Any SAX exception, possibly wrapping another exception.java.io.IOException- An IO exception from the parser, possibly from a byte stream or character stream supplied by the application.
-
parse
public GPathResult parse(java.nio.file.Path path) throws java.io.IOException, org.xml.sax.SAXException- Throws:
java.io.IOExceptionorg.xml.sax.SAXException
-
parseText
public GPathResult parseText(java.lang.String text) throws java.io.IOException, org.xml.sax.SAXExceptionA helper method to parse the given text as XML- Parameters:
text- a String containing XML to parse- Returns:
- An object which supports GPath expressions
- Throws:
org.xml.sax.SAXException- Any SAX exception, possibly wrapping another exception.java.io.IOException- An IO exception from the parser, possibly from a byte stream or character stream supplied by the application.
-
getDTDHandler
public org.xml.sax.DTDHandler getDTDHandler() -
getEntityResolver
public org.xml.sax.EntityResolver getEntityResolver() -
getErrorHandler
public org.xml.sax.ErrorHandler getErrorHandler() -
getFeature
public boolean getFeature(java.lang.String uri) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException- Throws:
org.xml.sax.SAXNotRecognizedExceptionorg.xml.sax.SAXNotSupportedException
-
getProperty
public java.lang.Object getProperty(java.lang.String uri) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException- Throws:
org.xml.sax.SAXNotRecognizedExceptionorg.xml.sax.SAXNotSupportedException
-
setDTDHandler
public void setDTDHandler(org.xml.sax.DTDHandler dtdHandler) -
setEntityResolver
public void setEntityResolver(org.xml.sax.EntityResolver entityResolver) -
setEntityBaseUrl
public void setEntityBaseUrl(java.net.URL base)Resolves entities against using the supplied URL as the base for relative URLs- Parameters:
base- The URL used to resolve relative URLs
-
setErrorHandler
public void setErrorHandler(org.xml.sax.ErrorHandler errorHandler) -
setFeature
public void setFeature(java.lang.String uri, boolean value) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException- Throws:
org.xml.sax.SAXNotRecognizedExceptionorg.xml.sax.SAXNotSupportedException
-
setProperty
public void setProperty(java.lang.String uri, java.lang.Object value) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException- Throws:
org.xml.sax.SAXNotRecognizedExceptionorg.xml.sax.SAXNotSupportedException
-
startDocument
public void startDocument() throws org.xml.sax.SAXException- Specified by:
startDocumentin interfaceorg.xml.sax.ContentHandler- Overrides:
startDocumentin classorg.xml.sax.helpers.DefaultHandler- Throws:
org.xml.sax.SAXException
-
startPrefixMapping
public void startPrefixMapping(java.lang.String tag, java.lang.String uri) throws org.xml.sax.SAXException- Specified by:
startPrefixMappingin interfaceorg.xml.sax.ContentHandler- Overrides:
startPrefixMappingin classorg.xml.sax.helpers.DefaultHandler- Throws:
org.xml.sax.SAXException
-
startElement
public void startElement(java.lang.String namespaceURI, java.lang.String localName, java.lang.String qName, org.xml.sax.Attributes atts) throws org.xml.sax.SAXException- Specified by:
startElementin interfaceorg.xml.sax.ContentHandler- Overrides:
startElementin classorg.xml.sax.helpers.DefaultHandler- Throws:
org.xml.sax.SAXException
-
ignorableWhitespace
public void ignorableWhitespace(char[] buffer, int start, int len) throws org.xml.sax.SAXException- Specified by:
ignorableWhitespacein interfaceorg.xml.sax.ContentHandler- Overrides:
ignorableWhitespacein classorg.xml.sax.helpers.DefaultHandler- Throws:
org.xml.sax.SAXException
-
characters
public void characters(char[] ch, int start, int length) throws org.xml.sax.SAXException- Specified by:
charactersin interfaceorg.xml.sax.ContentHandler- Overrides:
charactersin classorg.xml.sax.helpers.DefaultHandler- Throws:
org.xml.sax.SAXException
-
endElement
public void endElement(java.lang.String namespaceURI, java.lang.String localName, java.lang.String qName) throws org.xml.sax.SAXException- Specified by:
endElementin interfaceorg.xml.sax.ContentHandler- Overrides:
endElementin classorg.xml.sax.helpers.DefaultHandler- Throws:
org.xml.sax.SAXException
-
endDocument
public void endDocument() throws org.xml.sax.SAXException- Specified by:
endDocumentin interfaceorg.xml.sax.ContentHandler- Overrides:
endDocumentin classorg.xml.sax.helpers.DefaultHandler- Throws:
org.xml.sax.SAXException
-