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获取属性的命名空间。
getValue()String获取属性的值。
setName(name)Attribute设置属性的本地名称。
setNamespace(namespace)Attribute设置属性的命名空间。
setValue(value)Attribute设置属性的值。

Cdata

方法

方法返回类型简介
append(text)Text将给定文本附加到节点中已存在的任何内容。
detach()Content将节点从其父级 Element 节点分离。
getParentElement()Element获取节点的父 Element 节点。
getText()String获取 Text 节点的文本值。
getValue()String获取节点的直接或间接子节点的所有文本值,按文档中显示的顺序。
setText(text)Text设置 Text 节点的文本值。

Comment

方法

方法返回类型简介
detach()Content将节点从其父级 Element 节点分离。
getParentElement()Element获取节点的父 Element 节点。
getText()String获取 Comment 节点的文本值。
getValue()String获取节点的直接或间接子节点的所有文本值,按文档中显示的顺序。
setText(text)Comment设置 Comment 节点的文本值。

Content

方法

方法返回类型简介
asCdata()Cdata将节点投射为 CDATASection 节点,以便自动补全。
asComment()Comment将节点投射为 Comment 节点,以便自动补全。
asDocType()DocType将节点投射为 DocumentType 节点,以便自动补全。
asElement()Element将节点投射为 Element 节点,以便自动补全。
asEntityRef()EntityRef将节点投射为 EntityReference 节点,以便自动补全。
asProcessingInstruction()ProcessingInstruction将节点投射为 ProcessingInstruction 节点,以便自动补全。
asText()Text将节点投射为 Text 节点,以便自动补全。
detach()Content将节点从其父级 Element 节点分离。
getParentElement()Element获取节点的父 Element 节点。
getType()ContentType获取节点的内容类型。
getValue()String获取节点的直接或间接子节点的所有文本值,按文档中显示的顺序。

ContentType

属性

属性类型说明
CDATAEnumXML CDATASection 节点。
COMMENTEnumXML Comment 节点。
DOCTYPEEnumXML DocumentType 节点。
ELEMENTEnumXML Element 节点。
ENTITYREFEnumXML EntityReference 节点。
PROCESSINGINSTRUCTIONEnumXML ProcessingInstruction 节点。
TEXTEnumXML Text 节点。

DocType

方法

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

Document

方法

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

Element

方法

方法返回类型简介
addContent(content)Element将指定节点附加为 Element 节点的最后一个子节点。
addContent(index, content)ElementElement 节点的所有直接子节点中,将给定节点插入给定索引。
cloneContent()Content[]为 {@code Element} 节点的所有直接子节点创建未附加的副本。
detach()Content将节点从其父级 Element 节点分离。
getAllContent()Content[]获取 {@code Element} 节点的所有直接子节点。
getAttribute(name)Attribute获取具有给定名称且无命名空间的此 Element 节点的属性。
getAttribute(name, namespace)Attribute获取具有给定名称和命名空间的此 Element 节点的属性。
getAttributes()Attribute[]按文档中显示的顺序获取此 Element 节点的所有属性。
getChild(name)Element获取具有给定名称且没有命名空间且是此 Element 节点的直接子项的第一个 Element 节点。
getChild(name, namespace)Element获取具有给定名称和命名空间且是此 Element 节点的直接子项的第一个 Element 节点。
getChildText(name)String如果节点是 Element 节点的直接子节点,则获取具有给定名称且没有命名空间的节点的文本值。
getChildText(name, namespace)String如果节点是 Element 节点的直接子节点,则获取具有给定名称和命名空间的节点的文本值。
getChildren()Element[]获取此 Element 节点的所有直接子 Element 节点,按文档中显示的顺序。
getChildren(name)Element[]获取具有给定名称且没有命名空间且是此 Element 节点的直接子级的所有 Element 节点,按文档中显示的顺序。
getChildren(name, namespace)Element[]获取具有给定名称和命名空间且是此 Element 节点的直接子级的所有 Element 节点,按文档中显示的顺序。
getContent(index)Content从 {@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获取节点的父 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从 {@code Element} 节点的所有直接子节点中移除指定编号的节点。
setAttribute(attribute)Element为此 Element 节点设置给定属性。
setAttribute(name, value)Element使用给定名称、值和无命名空间为此 Element 节点设置属性。
setAttribute(name, value, namespace)Element使用给定的名称、值和命名空间为此 Element 节点设置属性。
setName(name)Element设置 Element 节点的本地名称。
setNamespace(namespace)Element设置 Element 节点的命名空间。
setText(text)Element设置 Element 节点的文本值。

EntityRef

方法

方法返回类型简介
detach()Content将节点从其父级 Element 节点分离。
getName()String获取 EntityReference 节点的名称。
getParentElement()Element获取节点的父 Element 节点。
getPublicId()String获取 EntityReference 节点的公开 ID。
getSystemId()String获取 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将节点从其父级 Element 节点分离。
getData()String获取 ProcessingInstruction 节点中的每个指令的原始数据。
getParentElement()Element获取节点的父 Element 节点。
getTarget()String获取 ProcessingInstruction 节点的目标。
getValue()String获取节点的直接或间接子节点的所有文本值,按文档中显示的顺序。

Text

方法

方法返回类型简介
append(text)Text将给定文本附加到节点中已存在的任何内容。
detach()Content将节点从其父级 Element 节点分离。
getParentElement()Element获取节点的父 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 节点创建一个未附加的 DocumentType 节点,并为外部子集数据提供给定的名称和系统 ID。
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创建 Format 对象以输出紧凑的 XML 文档。
getNamespace(uri)Namespace使用给定 URI 创建 Namespace
getNamespace(prefix, uri)Namespace使用给定的前缀和 URI 创建 Namespace
getNoNamespace()Namespace创建一个 Namespace,表示不存在实际命名空间。
getPrettyFormat()Format创建 Format 对象以输出可读性良好的 XML 文档。
getRawFormat()Format创建 Format 对象以输出原始 XML 文档。
getXmlNamespace()Namespace创建使用标准 xml 前缀的 Namespace
parse(xml)Document使用给定 XML 创建 Document,但不会验证 XML。