scala.xml
This library provides support for the XML literal syntax in Scala programs.
val planets: scala.xml.Elem = <planets>
<planet id="earth">
<title>Earth</title>
<mass unit="kg">5.9742e24</mass>
<radius unit="m">6378.14e3</radius>
</planet>
<planet id="mars">
<title>Mars</title>
<mass unit="kg">0.64191e24</mass>
<radius unit="m">3397.0e3</radius>
</planet>
</planets>
Additionally, you can mix Scala expressions in your XML elements by using the curly brace notation:
val sunMass = 1.99e30
val sunRadius = 6.96e8
val star = <star>
<title>Sun</title>
<mass unit="kg">{ sunMass }</mass>
<radius unit="m">{ sunRadius }</radius>
<surface unit="m²">{ 4 * Math.PI * Math.pow(sunRadius, 2) }</surface>
<volume unit="m³">{ 4/3 * Math.PI * Math.pow(sunRadius, 3) }</volume>
</star>
An XML element, for example <star/>
and <planet/>
, is represented in this library as a case class, scala.xml.Elem.
The sub-elements of XML values share a common base class, scala.xml.Node.
However, the non-element declarations found in XML files share a different common base class, scala.xml.dtd.Decl. Additionally, document type declarations are represented by a different trait, scala.xml.dtd.DTD.
For reading and writing XML data to and from files, see scala.xml.XML. The default parser of XML data is the Xerces parser and is provided in Java by javax.xml.parsers.SAXParser.
For more control of the input, use the parser written in Scala that is provided, scala.xml.parsing.ConstructingParser.
For working with XHTML input, use scala.xml.parsing.XhtmlParser.
For more control of the output, use the scala.xml.PrettyPrinter.
Utility methods for working with XML data are provided in scala.xml.Utility.
XML values in Scala are immutable, but you can traverse and transform XML data with a scala.xml.transform.RuleTransformer.
Attributes
Members list
Packages
Type members
Classlikes
The class Atom
provides an XML node for text (PCDATA
). It is used in both non-bound and bound XML representations.
The class Atom
provides an XML node for text (PCDATA
). It is used in both non-bound and bound XML representations.
Value parameters
- data
-
the text contained in this node, may not be
'''null'''
.
Attributes
- Supertypes
-
class SpecialNodeclass Nodeclass NodeSeqtrait Serializabletrait Equalityclass AbstractSeq[Node]trait Equalsclass AbstractIterable[Node]trait IterableOnce[Node]class Objecttrait Matchableclass AnyShow all
- Known subtypes
This singleton object contains the apply
and unapply
methods for convenient construction and deconstruction.
The Attribute
trait defines the interface shared by both scala.xml.PrefixedAttribute and scala.xml.UnprefixedAttribute.
The Attribute
trait defines the interface shared by both scala.xml.PrefixedAttribute and scala.xml.UnprefixedAttribute.
Attributes
- Companion
- object
- Supertypes
-
class MetaDatatrait Serializabletrait Equalitytrait Equalsclass AbstractIterable[MetaData]trait IterableOnce[MetaData]class Objecttrait Matchableclass AnyShow all
- Known subtypes
-
class PrefixedAttributeclass UnprefixedAttribute
The class Comment
implements an XML node for comments.
The class Comment
implements an XML node for comments.
Value parameters
- commentText
-
the text contained in this node, may not contain "--" and the final character may not be
-
to prevent a closing span of-->
which is invalid. https://www.w3.org/TR/xml11//#IDA5CES
Attributes
- Supertypes
-
trait Productclass SpecialNodeclass Nodeclass NodeSeqtrait Serializabletrait Equalityclass AbstractSeq[Node]trait Equalsclass AbstractIterable[Node]trait IterableOnce[Node]class Objecttrait Matchableclass AnyShow all
A document information item (according to InfoSet spec). The comments are copied from the Infoset spec, only augmented with some information on the Scala types for definitions that might have no value. Also plays the role of an XMLEvent
for pull parsing.
A document information item (according to InfoSet spec). The comments are copied from the Infoset spec, only augmented with some information on the Scala types for definitions that might have no value. Also plays the role of an XMLEvent
for pull parsing.
Attributes
- Supertypes
-
class NodeSeqtrait Serializabletrait Equalityclass AbstractSeq[Node]trait Equalsclass AbstractIterable[Node]trait IterableOnce[Node]class Objecttrait Matchableclass AnyShow all
This singleton object contains the apply
and unapplySeq
methods for convenient construction and deconstruction. It is possible to deconstruct any Node
instance (that is not a SpecialNode
or a Group
) using the syntax case Elem(prefix, label, attribs, scope, child @ _*) => ...
This singleton object contains the apply
and unapplySeq
methods for convenient construction and deconstruction. It is possible to deconstruct any Node
instance (that is not a SpecialNode
or a Group
) using the syntax case Elem(prefix, label, attribs, scope, child @ _*) => ...
Attributes
An immutable data object representing an XML element.
An immutable data object representing an XML element.
Child elements can be other Elems or any one of the other Node types.
XML attributes are implemented with the scala.xml.MetaData base class.
Optional XML namespace scope is represented by scala.xml.NamespaceBinding.
Value parameters
- attributes1
-
the attribute map
- child
-
the children of this node
- label
-
the element name
- minimizeEmpty
-
true
if this element should be serialized as minimized (i.e. "<el/>") when empty;false
if it should be written out in long form. - prefix
-
namespace prefix (may be null, but not the empty string)
- scope
-
the scope containing the namespace bindings
Attributes
- Companion
- object
- Supertypes
-
class Nodeclass NodeSeqtrait Serializabletrait Equalityclass AbstractSeq[Node]trait Equalsclass AbstractIterable[Node]trait IterableOnce[Node]class Objecttrait Matchableclass AnyShow all
The class EntityRef
implements an XML node for entity references.
The class EntityRef
implements an XML node for entity references.
Value parameters
- entityName
-
the name of the entity reference, for example
amp
.
Attributes
- Supertypes
-
trait Productclass SpecialNodeclass Nodeclass NodeSeqtrait Serializabletrait Equalityclass AbstractSeq[Node]trait Equalsclass AbstractIterable[Node]trait IterableOnce[Node]class Objecttrait Matchableclass AnyShow all
In an attempt to contain the damage being inflicted on consistency by the ad hoc equals
methods spread around xml
, the logic is centralized and all the xml
classes go through the xml.Equality trait
. There are two forms of xml
comparison.
In an attempt to contain the damage being inflicted on consistency by the ad hoc equals
methods spread around xml
, the logic is centralized and all the xml
classes go through the xml.Equality trait
. There are two forms of xml
comparison.
'''def''' strict_==(other: scala.xml.Equality)
This one tries to honor the little things like symmetry and hashCode contracts. The equals
method routes all comparisons through this.
xml_==(other: Any)
This one picks up where strict_==
leaves off. It might declare any two things equal.
As things stood, the logic not only made a mockery of the collections equals contract, but also laid waste to that of case classes.
Among the obstacles to sanity are/were:
Node extends NodeSeq extends Seq[Node] MetaData extends Iterable[MetaData] The hacky "Group" xml node which throws exceptions with wild abandon, so don't get too close Rampant asymmetry and impossible hashCodes Most classes claiming to be equal to "String" if some specific stringification of it was the same. String was never going to return the favor.
Attributes
Attributes
- Companion
- object
- Supertypes
- Known subtypes
-
class MetaDatatrait Attributeclass PrefixedAttributeclass UnprefixedAttributeobject Nullclass NamespaceBindingobject TopScopeclass NodeSeqclass Documentclass Nodeclass Elemclass Groupclass SpecialNodeclass Atom[A]class PCDataclass Textclass Unparsedclass Commentclass EntityRefclass ProcInstrShow all
A hack to group XML nodes in one node for output.
A hack to group XML nodes in one node for output.
Attributes
- Supertypes
-
trait Productclass Nodeclass NodeSeqtrait Serializabletrait Equalityclass AbstractSeq[Node]trait Equalsclass AbstractIterable[Node]trait IterableOnce[Node]class Objecttrait Matchableclass AnyShow all
Attributes
- Supertypes
-
trait Producttrait Equalsclass RuntimeExceptionclass Exceptionclass Throwabletrait Serializableclass Objecttrait Matchableclass AnyShow all
This class represents an attribute and at the same time a linked list of attributes. Every instance of this class is either
This class represents an attribute and at the same time a linked list of attributes. Every instance of this class is either
- an instance of
UnprefixedAttribute key,value
or - an instance of
PrefixedAttribute namespace_prefix,key,value
or Null
, the empty attribute list.
Namespace URIs are obtained by using the namespace scope of the element owning this attribute (see getNamespace
).
Attributes
- Companion
- object
- Supertypes
-
trait Serializabletrait Equalitytrait Equalsclass AbstractIterable[MetaData]trait IterableOnce[MetaData]class Objecttrait Matchableclass AnyShow all
- Known subtypes
Governs how empty elements (i.e. those without child elements) should be serialized.
Governs how empty elements (i.e. those without child elements) should be serialized.
Attributes
- Supertypes
- Self type
-
MinimizeMode.type
The class NamespaceBinding
represents namespace bindings and scopes. The binding for the default namespace is treated as a null prefix. the absent namespace is represented with the null uri. Neither prefix nor uri may be empty, which is not checked.
The class NamespaceBinding
represents namespace bindings and scopes. The binding for the default namespace is treated as a null prefix. the absent namespace is represented with the null uri. Neither prefix nor uri may be empty, which is not checked.
Attributes
An abstract class representing XML with nodes of a labeled tree. This class contains an implementation of a subset of XPath for navigation.
An abstract class representing XML with nodes of a labeled tree. This class contains an implementation of a subset of XPath for navigation.
- scala.xml.Comment — XML comment
- scala.xml.Elem — XML element
- scala.xml.EntityRef — XML entity
- scala.xml.PCData — Character data section (CDATA)
- scala.xml.ProcInstr — Processing instruction (PI)
- scala.xml.Text — Stand-alone parsed character data
Attributes
- Companion
- object
- Supertypes
-
class NodeSeqtrait Serializabletrait Equalityclass AbstractSeq[Node]trait Equalsclass AbstractIterable[Node]trait IterableOnce[Node]class Objecttrait Matchableclass AnyShow all
- Known subtypes
This class acts as a Buffer for nodes. If it is used as a sequence of nodes Seq[Node]
, it must be ensured that no updates occur after that point, because scala.xml.Node
is assumed to be immutable.
This class acts as a Buffer for nodes. If it is used as a sequence of nodes Seq[Node]
, it must be ensured that no updates occur after that point, because scala.xml.Node
is assumed to be immutable.
Despite this being a sequence, don't use it as key in a hashtable. Calling the hashcode function will result in a runtime error.
Attributes
- Supertypes
-
class ArrayBuffer[Node]trait DefaultSerializabletrait Serializabletrait IndexedBuffer[Node]trait IndexedSeq[Node]trait IndexedSeq[Node]class AbstractBuffer[Node]trait Shrinkable[Node]trait Clearableclass AbstractSeq[Node]trait Cloneableclass AbstractSeq[Node]trait Equalsclass AbstractIterable[Node]trait IterableOnce[Node]class Objecttrait Matchableclass AnyShow all
This class implements a wrapper around Seq[Node]
that adds XPath and comprehension methods.
This class implements a wrapper around Seq[Node]
that adds XPath and comprehension methods.
Attributes
- Companion
- object
- Supertypes
-
trait Serializabletrait Equalityclass AbstractSeq[Node]trait Equalsclass AbstractIterable[Node]trait IterableOnce[Node]class Objecttrait Matchableclass AnyShow all
- Known subtypes
Essentially, every method in here is a dummy, returning Zero[T]. It provides a backstop for the unusual collection defined by MetaData, sort of a linked list of tails.
Essentially, every method in here is a dummy, returning Zero[T]. It provides a backstop for the unusual collection defined by MetaData, sort of a linked list of tails.
Attributes
- Supertypes
-
trait Singletontrait Producttrait Mirrortrait Productclass MetaDatatrait Serializabletrait Equalitytrait Equalsclass AbstractIterable[MetaData]trait IterableOnce[MetaData]class Objecttrait Matchableclass AnyShow all
- Self type
-
Null.type
This class (which is not used by all XML parsers, but always used by the XHTML one) represents parseable character data, which appeared as CDATA sections in the input and is to be preserved as CDATA section in the output.
This class (which is not used by all XML parsers, but always used by the XHTML one) represents parseable character data, which appeared as CDATA sections in the input and is to be preserved as CDATA section in the output.
Attributes
- Companion
- object
- Supertypes
-
class SpecialNodeclass Nodeclass NodeSeqtrait Serializabletrait Equalityclass AbstractSeq[Node]trait Equalsclass AbstractIterable[Node]trait IterableOnce[Node]class Objecttrait Matchableclass AnyShow all
This singleton object contains the apply
and unapply
methods for convenient construction and deconstruction.
prefixed attributes always have a non-null namespace.
prefixed attributes always have a non-null namespace.
Value parameters
- value
-
the attribute value
Attributes
- Companion
- object
- Supertypes
-
trait Attributeclass MetaDatatrait Serializabletrait Equalitytrait Equalsclass AbstractIterable[MetaData]trait IterableOnce[MetaData]class Objecttrait Matchableclass AnyShow all
Attributes
- Companion
- class
- Supertypes
- Self type
-
PrefixedAttribute.type
Class for pretty printing. After instantiating, you can use the format() and formatNode() methods to convert XML to a formatted string. The class can be reused to pretty print any number of XML nodes.
Class for pretty printing. After instantiating, you can use the format() and formatNode() methods to convert XML to a formatted string. The class can be reused to pretty print any number of XML nodes.
Value parameters
- minimizeEmpty
-
self-close empty tags
- step
-
indentation
- width
-
the width to fit the output into
Attributes
- Note
-
This class is not threadsafe and should not be accessed by multiple threads at the same time.
- Supertypes
an XML node for processing instructions (PI)
an XML node for processing instructions (PI)
Value parameters
- proctext
-
text contained in this node, may not contain "?>"
- target
-
target name of this PI
Attributes
- Supertypes
-
trait Productclass SpecialNodeclass Nodeclass NodeSeqtrait Serializabletrait Equalityclass AbstractSeq[Node]trait Equalsclass AbstractIterable[Node]trait IterableOnce[Node]class Objecttrait Matchableclass AnyShow all
SpecialNode
is a special XML node which represents either text (PCDATA)
, a comment, a PI
, or an entity ref.
SpecialNode
is a special XML node which represents either text (PCDATA)
, a comment, a PI
, or an entity ref.
Attributes
- Supertypes
-
class Nodeclass NodeSeqtrait Serializabletrait Equalityclass AbstractSeq[Node]trait Equalsclass AbstractIterable[Node]trait IterableOnce[Node]class Objecttrait Matchableclass AnyShow all
- Known subtypes
The class Text
implements an XML node for text (PCDATA). It is used in both non-bound and bound XML representations.
The class Text
implements an XML node for text (PCDATA). It is used in both non-bound and bound XML representations.
Value parameters
- data
-
the text contained in this node, may not be null.
Attributes
- Companion
- object
- Supertypes
-
class SpecialNodeclass Nodeclass NodeSeqtrait Serializabletrait Equalityclass AbstractSeq[Node]trait Equalsclass AbstractIterable[Node]trait IterableOnce[Node]class Objecttrait Matchableclass AnyShow all
This singleton object contains the apply
and unapply
methods for convenient construction and deconstruction.
Attributes
- Companion
- class
- Supertypes
- Self type
-
TextBuffer.type
The class TextBuffer
is for creating text nodes without surplus whitespace. All occurrences of one or more whitespace in strings appended with the append
method will be replaced by a single space character, and leading and trailing space will be removed completely.
The class TextBuffer
is for creating text nodes without surplus whitespace. All occurrences of one or more whitespace in strings appended with the append
method will be replaced by a single space character, and leading and trailing space will be removed completely.
Attributes
- Companion
- object
- Supertypes
top level namespace scope. only contains the predefined binding for the "xml" prefix which is bound to "http://www.w3.org/XML/1998/namespace"
top level namespace scope. only contains the predefined binding for the "xml" prefix which is bound to "http://www.w3.org/XML/1998/namespace"
Attributes
- Supertypes
-
class NamespaceBindingtrait Serializabletrait Producttrait Equalitytrait Equalsclass Objecttrait Matchableclass AnyShow all
- Self type
-
TopScope.type
Attributes
- Supertypes
An XML node for unparsed content. It will be output verbatim, all bets are off regarding wellformedness etc.
An XML node for unparsed content. It will be output verbatim, all bets are off regarding wellformedness etc.
Value parameters
- data
-
content in this node, may not be null.
Attributes
- Companion
- object
- Supertypes
-
class SpecialNodeclass Nodeclass NodeSeqtrait Serializabletrait Equalityclass AbstractSeq[Node]trait Equalsclass AbstractIterable[Node]trait IterableOnce[Node]class Objecttrait Matchableclass AnyShow all
This singleton object contains the apply
and unapply
methods for convenient construction and deconstruction.
Unprefixed attributes have the null namespace, and no prefix field
Unprefixed attributes have the null namespace, and no prefix field
Attributes
- Companion
- object
- Supertypes
-
trait Attributeclass MetaDatatrait Serializabletrait Equalitytrait Equalsclass AbstractIterable[MetaData]trait IterableOnce[MetaData]class Objecttrait Matchableclass AnyShow all
Attributes
- Companion
- class
- Supertypes
- Self type
-
UnprefixedAttribute.type
The Utility
object provides utility functions for processing instances of bound and not bound XML classes, as well as escaping text nodes.
The Utility
object provides utility functions for processing instances of bound and not bound XML classes, as well as escaping text nodes.
Attributes
- Supertypes
- Self type
-
Utility.type
The object XML
provides constants, and functions to load and save XML elements. Use this when data binding is not desired, i.e. when XML is handled using Symbol
nodes.