This service allows scripts to parse, navigate, and programmatically create XML documents.
// Log the title and labels for the first page of blog posts on the Google Apps Developer blog.
function parseXml() {
var url = 'http://googleappsdeveloper.blogspot.com/atom.xml';
var xml = UrlFetchApp.fetch(url).getContentText();
var document = XmlService.parse(xml);
var root = document.getRootElement();
var atom = XmlService.getNamespace('http://www.w3.org/2005/Atom');
var entries = document.getRootElement().getChildren('entry', atom);
for (var i = 0; i < entries.length; i++) {
var title = entries[i].getChild('title', atom).getText();
var categoryElements = entries[i].getChildren('category', atom);
var labels = [];
for (var j = 0; j < categoryElements.length; j++) {
labels.push(categoryElements[j].getAttribute('term').getValue());
}
Logger.log('%s (%s)', title, labels.join(', '));
}
}
// Create and log an XML representation of the threads in your Gmail inbox.
function createXml() {
var root = XmlService.createElement('threads');
var threads = GmailApp.getInboxThreads();
for (var i = 0; i < threads.length; i++) {
var child = XmlService.createElement('thread')
.setAttribute('messageCount', threads[i].getMessageCount())
.setAttribute('isUnread', threads[i].isUnread())
.setText(threads[i].getFirstMessageSubject());
root.addContent(child);
}
var document = XmlService.createDocument(root);
var xml = XmlService.getPrettyFormat().format(document);
Logger.log(xml);
}
Properties
Property | Type | Description |
---|---|---|
ContentTypes | ContentType | An enumeration representing the types of XML content nodes. |
Methods
Method | Return type | Brief description |
---|---|---|
createCdata(text) | Cdata | Creates an unattached CDATASection node with the given value. |
createComment(text) | Comment | Creates an unattached Comment node with the given value. |
createDocType(elementName) | DocType | Creates an unattached DocumentType node for the root Element node
with the given name. |
createDocType(elementName, systemId) | DocType | Creates an unattached DocumentType node for the root Element node
with the given name, and the given system ID for the external subset data. |
createDocType(elementName, publicId, systemId) | DocType | Creates an unattached DocumentType node for the root Element node
with the given name, and the given public ID and system ID for the external subset data. |
createDocument() | Document | Creates an empty XML document. |
createDocument(rootElement) | Document | Creates an XML document with the given root Element node. |
createElement(name) | Element | Creates an unattached Element node with the given local name and no namespace. |
createElement(name, namespace) | Element | Creates an unattached Element node with the given local name and namespace. |
createText(text) | Text | Creates an unattached Text node with the given value. |
getCompactFormat() | Format | Creates a Format object for outputting a compact XML document. |
getNamespace(uri) | Namespace | Creates a Namespace with the given URI. |
getNamespace(prefix, uri) | Namespace | Creates a Namespace with the given prefix and URI. |
getNoNamespace() | Namespace | Creates a Namespace that represents the absence of a real namespace. |
getPrettyFormat() | Format | Creates a Format object for outputting a human-readable XML document. |
getRawFormat() | Format | Creates a Format object for outputting a raw XML document. |
getXmlNamespace() | Namespace | Creates a Namespace with the standard xml prefix. |
parse(xml) | Document | Creates an Document from the given XML, without validating the XML. |
Detailed documentation
createCdata(text)
Creates an unattached CDATASection
node with the given value.
Parameters
Name | Type | Description |
---|---|---|
text | String | the value to set |
Return
Cdata
— the newly created CDATASection
node
createComment(text)
Creates an unattached Comment
node with the given value.
Parameters
Name | Type | Description |
---|---|---|
text | String | the value to set |
Return
Comment
— the newly created Comment
node
createDocType(elementName)
Creates an unattached DocumentType
node for the root Element
node
with the given name.
Parameters
Name | Type | Description |
---|---|---|
elementName | String | the name of the root Element node to specify in the DocType
declaration |
Return
DocType
— the newly created DocumentType
node
createDocType(elementName, systemId)
Creates an unattached DocumentType
node for the root Element
node
with the given name, and the given system ID for the external subset data.
Parameters
Name | Type | Description |
---|---|---|
elementName | String | the name of the root Element node to specify in the DocType
declaration |
systemId | String | the system ID of the external subset data to set |
Return
DocType
— the newly created DocumentType
node
createDocType(elementName, publicId, systemId)
Creates an unattached DocumentType
node for the root Element
node
with the given name, and the given public ID and system ID for the external subset data.
Parameters
Name | Type | Description |
---|---|---|
elementName | String | the name of the root Element node to specify in the DocType
declaration |
publicId | String | the public ID of the external subset data to set |
systemId | String | the system ID of the external subset data to set |
Return
DocType
— the newly created DocumentType
node
createDocument(rootElement)
Creates an XML document with the given root Element
node.
Parameters
Name | Type | Description |
---|---|---|
rootElement | Element | the root Element node to set |
Return
Document
— the newly created document
createElement(name)
Creates an unattached Element
node with the given local name and no namespace.
Parameters
Name | Type | Description |
---|---|---|
name | String | the local name to set |
Return
Element
— the newly created Element
node
createElement(name, namespace)
Creates an unattached Element
node with the given local name and namespace.
Parameters
Name | Type | Description |
---|---|---|
name | String | the local name to set |
namespace | Namespace | the namespace to set |
Return
Element
— the newly created Element
node
createText(text)
Creates an unattached Text
node with the given value.
Parameters
Name | Type | Description |
---|---|---|
text | String | the value to set |
Return
Text
— the newly created Text
node
getCompactFormat()
Creates a Format
object for outputting a compact XML document. The formatter
defaults to UTF-8
encoding, no indentation, and no additional line breaks, but includes
the XML declaration and its encoding.
// Log an XML document in compact form.
var xml = '<root><a><b>Text!</b><b>More text!</b></a></root>';
var document = XmlService.parse(xml);
var output = XmlService.getCompactFormat()
.format(document);
Logger.log(output);
Return
Format
— the newly created formatter
getNamespace(uri)
Creates a Namespace
with the given URI.
Parameters
Name | Type | Description |
---|---|---|
uri | String | the URI for the namespace |
Return
Namespace
— the newly created namespace
getNamespace(prefix, uri)
Creates a Namespace
with the given prefix and URI.
Parameters
Name | Type | Description |
---|---|---|
prefix | String | the prefix for the namespace |
uri | String | the URI for the namespace |
Return
Namespace
— the newly created namespace
getNoNamespace()
Creates a Namespace
that represents the absence of a real namespace.
Return
Namespace
— the newly created namespace
getPrettyFormat()
Creates a Format
object for outputting a human-readable XML document. The formatter
defaults to UTF-8
encoding, two-space indentation, \r\n
line separators after
every node, and includes the XML declaration and its encoding.
// Log an XML document in human-readable form.
var xml = '<root><a><b>Text!</b><b>More text!</b></a></root>';
var document = XmlService.parse(xml);
var output = XmlService.getPrettyFormat()
.format(document);
Logger.log(output);
Return
Format
— the newly created formatter
getRawFormat()
Creates a Format
object for outputting a raw XML document. The formatter defaults to
UTF-8
encoding, no indentation and no line breaks other than those provided in the XML
document itself, and includes the XML declaration and its encoding.
// Log an XML document in raw form.
var xml = '<root><a><b>Text!</b><b>More text!</b></a></root>';
var document = XmlService.parse(xml);
var output = XmlService.getRawFormat()
.format(document);
Logger.log(output);
Return
Format
— the newly created formatter
getXmlNamespace()
Creates a Namespace
with the standard xml
prefix.
Return
Namespace
— the newly created namespace