XML Service

XML 服务

此服务允许脚本解析、浏览和以程序化的方式创建 XML 文档。

// Log the title and labels for the first page of blog posts on
// Google's The Keyword blog.
function parseXml() {
  let url = 'https://blog.google/rss/';
  let xml = UrlFetchApp.fetch(url).getContentText();
  let document = XmlService.parse(xml);
  let root = document.getRootElement();

  let channel = root.getChild('channel');
  let items = channel.getChildren('item');
  items.forEach(item => {
    let title = item.getChild('title').getText();
    let categories = item.getChildren('category');
    let labels = categories.map(category => category.getText());
    console.log('%s (%s)', title, labels.join(', '));
  });
}

// Create and log an XML representation of first 10 threads in your Gmail inbox.
function createXml() {
  let root = XmlService.createElement('threads');
  let threads = GmailApp.getInboxThreads()
  threads = threads.slice(0,10); // Just the first 10
  threads.forEach(thread => {
    let child = XmlService.createElement('thread')
        .setAttribute('messageCount', thread.getMessageCount())
        .setAttribute('isUnread', thread.isUnread())
        .setText(thread.getFirstMessageSubject());
    root.addContent(child);
  });
  let document = XmlService.createDocument(root);
  let xml = XmlService.getPrettyFormat().format(document);
  console.log(xml);
}

名称简介
AttributeXML 属性的表示形式。
CdataXML CDATASection 节点的表示形式。
CommentXML Comment 节点的表示形式。
Content通用 XML 节点的表示形式。
ContentType一种枚举,用于表示 XML 内容节点的类型。
DocTypeXML DocumentType 节点的表示形式。
DocumentXML 文档的表示形式。
ElementXML Element 节点的表示形式。
EntityRefXML EntityReference 节点的表示形式。
Format用于输出 XML 文档的格式化程序,具有三种可进一步自定义的预定义格式。
NamespaceXML 命名空间的表示形式。
ProcessingInstructionXML ProcessingInstruction 节点的表示形式。
TextXML Text 节点的表示形式。
XmlService此服务允许脚本解析、浏览和以程序化的方式创建 XML 文档。

Attribute

方法

方法返回类型简介
getName()String获取属性的本地名称。
getNamespace()Namespace|null获取属性的命名空间。
getValue()String获取属性的值。
setName(name)Attribute设置属性的本地名称。
setNamespace(namespace)Attribute为属性设置命名空间。
setValue(value)Attribute设置属性的值。

Cdata

方法

方法返回类型简介
append(text)Text将指定文本附加到节点中已有的任何内容。
detach()Content|null将节点从其父级 Element 节点分离。
getParentElement()Element|null获取节点的父 Element 节点。
getText()String获取 Text 节点的文本值。
getValue()String按节点在文档中出现的顺序获取该节点的所有直属或非直属子节点的文本值。
setText(text)Text设置 Text 节点的文本值。

Comment

方法

方法返回类型简介
detach()Content|null将节点从其父级 Element 节点分离。
getParentElement()Element|null获取节点的父 Element 节点。
getText()String获取 Comment 节点的文本值。
getValue()String按节点在文档中出现的顺序获取该节点的所有直属或非直属子节点的文本值。
setText(text)Comment设置 Comment 节点的文本值。

Content

方法

方法返回类型简介
asCdata()Cdata|null将节点转换为 CDATASection 节点,以用于自动补全。
asComment()Comment|null将节点转换为 Comment 节点,以用于自动补全。
asDocType()DocType|null将节点转换为 DocumentType 节点,以用于自动补全。
asElement()Element|null将节点转换为 Element 节点,以用于自动补全。
asEntityRef()EntityRef|null将节点转换为 EntityReference 节点,以用于自动补全。
asProcessingInstruction()ProcessingInstruction|null将节点转换为 ProcessingInstruction 节点,以用于自动补全。
asText()Text|null将节点转换为 Text 节点,以用于自动补全。
detach()Content|null将节点从其父级 Element 节点分离。
getParentElement()Element|null获取节点的父 Element 节点。
getType()ContentType获取节点的内容类型。
getValue()String按节点在文档中出现的顺序获取该节点的所有直属或非直属子节点的文本值。

ContentType

属性

属性类型说明
CDATAEnum一个 XML CDATASection 节点。
COMMENTEnum一个 XML Comment 节点。
DOCTYPEEnum一个 XML DocumentType 节点。
ELEMENTEnum一个 XML Element 节点。
ENTITYREFEnum一个 XML EntityReference 节点。
PROCESSINGINSTRUCTIONEnum一个 XML ProcessingInstruction 节点。
TEXTEnum一个 XML Text 节点。

DocType

方法

方法返回类型简介
detach()Content|null将节点从其父级 Element 节点分离。
getElementName()String获取 DocType 声明中指定的根 Element 节点的名称。
getInternalSubset()String获取 DocumentType 节点的内部子集数据。
getParentElement()Element|null获取节点的父 Element 节点。
getPublicId()String获取 DocumentType 节点的外部子集数据的公开 ID。
getSystemId()String获取 DocumentType 节点的外部子集数据的系统 ID。
getValue()String按节点在文档中出现的顺序获取该节点的所有直属或非直属子节点的文本值。
setElementName(name)DocType设置根 Element 节点的名称,以便在 DocType 声明中指定。
setInternalSubset(data)DocTypeDocumentType 节点设置内部子集数据。
setPublicId(id)DocTypeDocumentType 节点设置外部子集数据的公开 ID。
setSystemId(id)DocTypeDocumentType 节点设置外部子集数据的系统 ID。

Document

方法

方法返回类型简介
addContent(content)Document将指定节点附加到文档末尾。
addContent(index, content)Document在文档的所有直属子节点中,将指定节点插入到指定索引处。
cloneContent()Content[]创建文档的所有直接子节点的不附加副本。
detachRootElement()Element|null分离并返回文档的根 Element 节点。
getAllContent()Content[]获取文档的所有直属子节点。
getContent(index)Content|null获取文档的所有直接子节点中位于指定索引处的节点。
getContentSize()Integer获取文档的直属子节点的数量。
getDescendants()Content[]按节点在文档中出现的顺序获取文档的所有直接或间接子节点。
getDocType()DocType|null获取文档的 DocType 声明。
getRootElement()Element|null获取文档的根 Element 节点。
hasRootElement()Boolean确定文档是否具有根 Element 节点。
removeContent()Content[]移除文档的所有直接子节点。
removeContent(content)Boolean移除指定节点(如果该节点是文档的直接子节点)。
removeContent(index)Content|null移除文档的所有直属子节点中位于指定索引处的节点。
setDocType(docType)Document设置文档的 DocType 声明。
setRootElement(element)Document设置文档的根 Element 节点。

Element

方法

方法返回类型简介
addContent(content)Element将给定节点附加为 Element 节点的最后一个子节点。
addContent(index, content)ElementElement 节点的所有直属子节点中,将指定节点插入到指定索引处。
cloneContent()Content[]创建 {@code Element} 节点的所有直接子节点的不附加副本。
detach()Content|null将节点从其父级 Element 节点分离。
getAllContent()Content[]获取 {@code Element} 节点的所有直接子节点。
getAttribute(name)Attribute|null获取具有指定名称且没有命名空间的 Element 节点的属性。
getAttribute(name, namespace)Attribute|null获取具有指定名称和命名空间的 Element 节点的属性。
getAttributes()Attribute[]按文档中出现的顺序获取相应 Element 节点的所有属性。
getChild(name)Element|null获取具有指定名称且没有命名空间的第一个 Element 节点,该节点是此 Element 节点的直接子节点。
getChild(name, namespace)Element|null获取第一个具有指定名称和命名空间且是此 Element 节点的直接子节点的 Element 节点。
getChildText(name)String|null如果节点是 Element 节点的直属子节点,则获取具有指定名称且没有命名空间的节点的文本值。
getChildText(name, namespace)String|null如果节点是 Element 节点的直接子节点,则获取具有指定名称和命名空间的节点的文本值。
getChildren()Element[]按文档中的显示顺序获取此 Element 节点的所有直属子级 Element 节点。
getChildren(name)Element[]获取此 Element 节点的所有直接子级 Element 节点,这些节点具有指定名称且没有命名空间,并按它们在文档中出现的顺序返回。
getChildren(name, namespace)Element[]按文档中出现的顺序,获取具有指定名称和命名空间且是此 Element 节点的直接子级的所有 Element 节点。
getContent(index)Content|null获取相应索引处的节点(该节点是 {@code Element} 节点的直属子节点)。
getContentSize()Integer获取 {@code Element} 节点的直属子节点的数量。
getDescendants()Content[]按文档中出现的顺序获取 {@code Element} 节点的所有直接或间接子节点。
getDocument()Document获取包含 {@code Element} 节点的 XML 文档。
getName()String获取 Element 节点的本地名称。
getNamespace()Namespace获取 Element 节点的命名空间。
getNamespace(prefix)Namespace获取具有指定前缀的 Element 节点的命名空间。
getParentElement()Element|null获取节点的父 Element 节点。
getQualifiedName()String获取 Element 节点的本地名称和命名空间前缀,格式为 [namespacePrefix]:[localName]
getText()String获取 Element 节点的文本值。
getValue()String按节点在文档中出现的顺序获取该节点的所有直属或非直属子节点的文本值。
isAncestorOf(other)Boolean确定此 Element 节点是否为给定 Element 节点的直接或间接父节点。
isRootElement()Boolean确定 Element 节点是否为文档的根节点。
removeAttribute(attribute)Boolean移除相应 Element 节点的指定属性(如果存在)。
removeAttribute(attributeName)Boolean移除具有指定名称且没有命名空间的相应 Element 节点的属性(如果存在此类属性)。
removeAttribute(attributeName, namespace)Boolean移除具有指定名称和命名空间的相应 Element 节点的属性(如果存在此类属性)。
removeContent()Content[]移除 {@code Element} 节点的所有直接子节点。
removeContent(content)Boolean移除指定节点(如果该节点是 {@code Element} 节点的直接子节点)。
removeContent(index)Content|null移除 {@code Element} 节点的所有直属子节点中位于指定索引处的节点。
setAttribute(attribute)Element为相应 Element 节点设置指定属性。
setAttribute(name, value)Element使用给定的名称和值(不含命名空间)为相应 Element 节点设置属性。
setAttribute(name, value, namespace)Element使用给定的名称、值和命名空间为此 Element 节点设置属性。
setName(name)Element设置 Element 节点的本地名称。
setNamespace(namespace)ElementElement 节点设置命名空间。
setText(text)Element设置 Element 节点的文本值。

EntityRef

方法

方法返回类型简介
detach()Content|null将节点从其父级 Element 节点分离。
getName()String获取 EntityReference 节点的名称。
getParentElement()Element|null获取节点的父 Element 节点。
getPublicId()String|null获取 EntityReference 节点的公开 ID。
getSystemId()String|null获取 EntityReference 节点的系统 ID。
getValue()String按节点在文档中出现的顺序获取该节点的所有直属或非直属子节点的文本值。
setName(name)EntityRef设置 EntityReference 节点的名称。
setPublicId(id)EntityRef设置 EntityReference 节点的公开 ID。
setSystemId(id)EntityRef设置 EntityReference 节点的系统 ID。

Format

方法

方法返回类型简介
format(document)String以格式化字符串的形式输出给定的 Document
format(element)String以格式化字符串的形式输出给定的 Element 节点。
setEncoding(encoding)Format设置格式化程序应使用的字符编码。
setIndent(indent)Format设置用于缩进子节点(相对于其父节点)的字符串。
setLineSeparator(separator)Format设置在格式化程序通常会插入换行符时要插入的字符串。
setOmitDeclaration(omitDeclaration)Format设置格式化程序是否应省略 XML 声明(例如 <?xml version="1.0" encoding="UTF-8"?>)。
setOmitEncoding(omitEncoding)Format设置格式化程序是否应在 XML 声明中省略编码,例如 <?xml version="1.0" encoding="UTF-8"?> 中的编码字段。

Namespace

方法

方法返回类型简介
getPrefix()String获取命名空间的前缀。
getURI()String获取命名空间的 URI。

ProcessingInstruction

方法

方法返回类型简介
detach()Content|null将节点从其父级 Element 节点分离。
getData()String获取 ProcessingInstruction 节点中每条指令的原始数据。
getParentElement()Element|null获取节点的父 Element 节点。
getTarget()String获取 ProcessingInstruction 节点的目标。
getValue()String按节点在文档中出现的顺序获取该节点的所有直属或非直属子节点的文本值。

Text

方法

方法返回类型简介
append(text)Text将指定文本附加到节点中已有的任何内容。
detach()Content|null将节点从其父级 Element 节点分离。
getParentElement()Element|null获取节点的父 Element 节点。
getText()String获取 Text 节点的文本值。
getValue()String按节点在文档中出现的顺序获取该节点的所有直属或非直属子节点的文本值。
setText(text)Text设置 Text 节点的文本值。

XmlService

属性

属性类型说明
ContentTypesContentType一种枚举,用于表示 XML 内容节点的类型。

方法

方法返回类型简介
createCdata(text)Cdata使用给定值创建未附加的 CDATASection 节点。
createComment(text)Comment使用给定值创建未附加的 Comment 节点。
createDocType(elementName)DocType为具有指定名称的根 Element 节点创建未附加的 DocumentType 节点。
createDocType(elementName, systemId)DocType为具有指定名称的根 Element 节点和外部子集数据的指定系统 ID 创建一个未附加的 DocumentType 节点。
createDocType(elementName, publicId, systemId)DocType为具有指定名称的根 Element 节点创建未附加的 DocumentType 节点,并为外部子集数据提供指定的公开 ID 和系统 ID。
createDocument()Document创建空的 XML 文档。
createDocument(rootElement)Document使用给定的根 Element 节点创建 XML 文档。
createElement(name)Element创建具有给定本地名称且没有命名空间的未附加 Element 节点。
createElement(name, namespace)Element创建具有指定本地名称和命名空间的未附加 Element 节点。
createText(text)Text使用给定值创建未附加的 Text 节点。
getCompactFormat()Format创建用于输出紧凑 XML 文档的 Format 对象。
getNamespace(uri)Namespace使用给定的 URI 创建 Namespace
getNamespace(prefix, uri)Namespace使用给定的前缀和 URI 创建 Namespace
getNoNamespace()Namespace创建表示缺少实际命名空间的 Namespace
getPrettyFormat()Format创建用于输出可读 XML 文档的 Format 对象。
getRawFormat()Format创建用于输出原始 XML 文档的 Format 对象。
getXmlNamespace()Namespace创建具有标准 xml 前缀的 Namespace
parse(xml)Document根据给定的 XML 创建 Document,但不验证 XML。