Word.CustomXmlPart class

表示自定义 XML 部分。

扩展

注解

API 集:WordApi 1.4

使用方

示例

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part.yaml

// Adds a custom XML part.
await Word.run(async (context) => {
  const originalXml =
    "<Reviewers><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>";
  const customXmlPart: Word.CustomXmlPart = context.document.customXmlParts.add(originalXml);
  customXmlPart.load("id");
  const xmlBlob = customXmlPart.getXml();

  await context.sync();

  const readableXml = addLineBreaksToXML(xmlBlob.value);
  console.log("Added custom XML part:", readableXml);

  // Store the XML part's ID in a setting so the ID is available to other functions.
  const settings: Word.SettingCollection = context.document.settings;
  settings.add("ContosoReviewXmlPartId", customXmlPart.id);

  await context.sync();
});

属性

builtIn

获取 是否 CustomXmlPart 内置。

context

与对象关联的请求上下文。 这将加载项的进程连接到 Office 主机应用程序的进程。

documentElement

获取文档中数据的绑定区域的根元素。 如果区域为空,则属性返回 Nothing

errors

获取提供 CustomXmlValidationErrorCollection 对任何 XML 验证错误的访问权限的对象。

id

获取自定义 XML 部分的 ID。

namespaceManager

获取用于当前 CustomXmlPart 对象的命名空间前缀映射集。

namespaceUri

获取自定义 XML 部分的命名空间 URI。

schemaCollection

指定表示 CustomXmlSchemaCollection 附加到文档中数据的绑定区域的架构集的对象。

xml

获取当前 CustomXmlPart 对象的 XML 表示形式。

方法

addNode(parent, options)

将节点添加到 XML 树。

delete()

删除自定义 XML 部件。

deleteAttribute(xpath, namespaceMappings, name)

从 xpath 标识的元素中删除具有给定名称的属性。

deleteElement(xpath, namespaceMappings)

删除由 xpath 标识的元素。

getXml()

获取自定义 XML 部分的完整 XML 内容。

insertAttribute(xpath, namespaceMappings, name, value)

将具有给定名称和值的属性插入到 xpath 标识的元素。

insertElement(xpath, xml, namespaceMappings, index)

在子位置索引处由 xpath 标识的父元素下方插入给定的 XML。

load(options)

将命令加入队列以加载对象的指定属性。 阅读属性前必须先调用 context.sync()

load(propertyNames)

将命令加入队列以加载对象的指定属性。 阅读属性前必须先调用 context.sync()

load(propertyNamesAndPaths)

将命令加入队列以加载对象的指定属性。 阅读属性前必须先调用 context.sync()

loadXml(xml)

从 XML 字符串填充 CustomXmlPart 对象。

query(xpath, namespaceMappings)

查询自定义 XML 部分的 XML 内容。

selectNodes(xPath)

从自定义 XML 部件中选择节点集合。

selectSingleNode(xPath)

选择自定义 XML 部件内与 XPath 表达式匹配的单个节点。

set(properties, options)

同时设置对象的多个属性。 可以传递具有相应属性的纯文本对象,也可以传递另一个相同类型的 API 对象。

set(properties)

基于现有加载的对象,同时在对象上设置多个属性。

setXml(xml)

设置自定义 XML 部分的完整 XML 内容。

toJSON()

覆盖 JavaScript toJSON() 方法,以便在将 API 对象传递给 JSON.stringify()时提供更有用的输出。 (JSON.stringify反过来调用 toJSON 传递给它的对象的方法。) 虽然原始 Word.CustomXmlPart 对象是 API 对象, toJSON 但该方法返回一个纯 JavaScript 对象, (类型化为 Word.Interfaces.CustomXmlPartData) ,其中包含从原始对象加载的任何子属性的浅层副本。

track()

根据文档中的相应更改来跟踪对象,以便进行自动调整。 此调用是 context.trackedObjects.add (thisObject) 的简写。 如果在调用中 .sync 使用此对象,并且在“.run”批处理的顺序执行之外使用此对象,并且在设置属性或对对象调用方法时收到“InvalidObjectPath”错误,则需要在首次创建对象时将对象添加到跟踪对象集合。 如果此对象是集合的一部分,您还应跟踪父集合。

untrack()

释放与此对象关联的内存(如果先前已跟踪过)。 此调用是 context.trackedObjects.remove (thisObject) 的简写。 拥有许多跟踪对象会降低主机应用程序的速度,因此请在使用完毕后释放所添加的任何对象。 需要在内存释放生效之前调用 context.sync()

updateAttribute(xpath, namespaceMappings, name, value)

使用 xpath 标识的元素的给定名称汇报属性的值。

updateElement(xpath, xml, namespaceMappings)

汇报 xpath 标识的元素的 XML。

属性详细信息

builtIn

获取 是否 CustomXmlPart 内置。

readonly builtIn: boolean;

属性值

boolean

注解

API 集:WordApiDesktop 1.3

context

与对象关联的请求上下文。 这将加载项的进程连接到 Office 主机应用程序的进程。

context: RequestContext;

属性值

documentElement

获取文档中数据的绑定区域的根元素。 如果区域为空,则属性返回 Nothing

readonly documentElement: Word.CustomXmlNode;

属性值

注解

API 集:WordApiDesktop 1.3

errors

注意

此 API 以预览状态提供给开发者,可能根据我们收到的反馈更改。 请勿在生产环境中使用此 API。

获取提供 CustomXmlValidationErrorCollection 对任何 XML 验证错误的访问权限的对象。

readonly errors: Word.CustomXmlValidationErrorCollection;

属性值

注解

API 集:WordApi BETA (仅预览版)

id

获取自定义 XML 部分的 ID。

readonly id: string;

属性值

string

注解

API 集:WordApi 1.4

示例

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part.yaml

// Adds a custom XML part.
await Word.run(async (context) => {
  const originalXml =
    "<Reviewers><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>";
  const customXmlPart: Word.CustomXmlPart = context.document.customXmlParts.add(originalXml);
  customXmlPart.load("id");
  const xmlBlob = customXmlPart.getXml();

  await context.sync();

  const readableXml = addLineBreaksToXML(xmlBlob.value);
  console.log("Added custom XML part:", readableXml);

  // Store the XML part's ID in a setting so the ID is available to other functions.
  const settings: Word.SettingCollection = context.document.settings;
  settings.add("ContosoReviewXmlPartId", customXmlPart.id);

  await context.sync();
});

namespaceManager

获取用于当前 CustomXmlPart 对象的命名空间前缀映射集。

readonly namespaceManager: Word.CustomXmlPrefixMappingCollection;

属性值

注解

API 集:WordApiDesktop 1.3

namespaceUri

获取自定义 XML 部分的命名空间 URI。

readonly namespaceUri: string;

属性值

string

注解

API 集:WordApi 1.4

示例

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part-ns.yaml

// Original XML: <Reviewers xmlns='http://schemas.contoso.com/review/1.0'><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>

// Gets the namespace URI from a custom XML part.
await Word.run(async (context) => {
  const settings: Word.SettingCollection = context.document.settings;
  const xmlPartIDSetting: Word.Setting = settings.getItemOrNullObject("ContosoReviewXmlPartIdNS").load("value");

  await context.sync();

  if (xmlPartIDSetting.value) {
    const customXmlPart: Word.CustomXmlPart = context.document.customXmlParts.getItem(xmlPartIDSetting.value);
    customXmlPart.load("namespaceUri");
    await context.sync();

    const namespaceUri = customXmlPart.namespaceUri;
    console.log(`Namespace URI: ${JSON.stringify(namespaceUri)}`);
  } else {
    console.warn("Didn't find custom XML part.");
  }
});

schemaCollection

指定表示 CustomXmlSchemaCollection 附加到文档中数据的绑定区域的架构集的对象。

schemaCollection: Word.CustomXmlSchemaCollection;

属性值

注解

API 集:WordApiDesktop 1.3

xml

获取当前 CustomXmlPart 对象的 XML 表示形式。

readonly xml: string;

属性值

string

注解

API 集:WordApiDesktop 1.3

方法详细信息

addNode(parent, options)

将节点添加到 XML 树。

addNode(parent: Word.CustomXmlNode, options?: Word.CustomXmlAddNodeOptions): OfficeExtension.ClientResult<number>;

参数

parent
Word.CustomXmlNode

要添加新节点的父节点。

options
Word.CustomXmlAddNodeOptions

可选。 定义要添加的节点的选项。

返回

注解

API 集:WordApiDesktop 1.3

delete()

删除自定义 XML 部件。

delete(): void;

返回

void

注解

API 集:WordApi 1.4

示例

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part.yaml

// Original XML: <Reviewers><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>

// Deletes a custom XML part.
await Word.run(async (context) => {
  const settings: Word.SettingCollection = context.document.settings;
  const xmlPartIDSetting: Word.Setting = settings.getItemOrNullObject("ContosoReviewXmlPartId").load("value");
  await context.sync();

  if (xmlPartIDSetting.value) {
    let customXmlPart: Word.CustomXmlPart = context.document.customXmlParts.getItem(xmlPartIDSetting.value);
    const xmlBlob = customXmlPart.getXml();
    customXmlPart.delete();
    customXmlPart = context.document.customXmlParts.getItemOrNullObject(xmlPartIDSetting.value);

    await context.sync();

    if (customXmlPart.isNullObject) {
      console.log(`The XML part with the ID ${xmlPartIDSetting.value} has been deleted.`);

      // Delete the associated setting too.
      xmlPartIDSetting.delete();

      await context.sync();
    } else {
      const readableXml = addLineBreaksToXML(xmlBlob.value);
      console.error(`This is strange. The XML part with the id ${xmlPartIDSetting.value} wasn't deleted:`, readableXml);
    }
  } else {
    console.warn("Didn't find custom XML part to delete.");
  }
});

...

// Original XML: <Reviewers xmlns='http://schemas.contoso.com/review/1.0'><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>

// Deletes a custom XML part.
await Word.run(async (context) => {
  const settings: Word.SettingCollection = context.document.settings;
  const xmlPartIDSetting: Word.Setting = settings.getItemOrNullObject("ContosoReviewXmlPartIdNS").load("value");
  await context.sync();

  if (xmlPartIDSetting.value) {
    let customXmlPart: Word.CustomXmlPart = context.document.customXmlParts.getItem(xmlPartIDSetting.value);
    const xmlBlob = customXmlPart.getXml();
    customXmlPart.delete();
    customXmlPart = context.document.customXmlParts.getItemOrNullObject(xmlPartIDSetting.value);

    await context.sync();

    if (customXmlPart.isNullObject) {
      console.log(`The XML part with the ID ${xmlPartIDSetting.value} has been deleted.`);

      // Delete the associated setting too.
      xmlPartIDSetting.delete();

      await context.sync();
    } else {
      const readableXml = addLineBreaksToXML(xmlBlob.value);
      console.error(
        `This is strange. The XML part with the id ${xmlPartIDSetting.value} wasn't deleted:`,
        readableXml
      );
    }
  } else {
    console.warn("Didn't find custom XML part to delete.");
  }
});

deleteAttribute(xpath, namespaceMappings, name)

从 xpath 标识的元素中删除具有给定名称的属性。

deleteAttribute(xpath: string, namespaceMappings: {
            [key: string]: string;
        }, name: string): void;

参数

xpath

string

XPath 表示法中单个元素的绝对路径。

namespaceMappings

{ [key: string]: string; }

一个对象,其属性值是命名空间名称,其属性名称是相应命名空间的别名。 例如, {greg: "http://calendartypes.org/xsds/GregorianCalendar"}. 属性名称 (如“greg”) 可以是任何不使用保留 XPath 字符的字符串,例如正斜杠“/”。

name

string

属性的名称。

返回

void

注解

API 集:WordApi 1.4

如果树中的任何元素具有 xmlns 属性 (其值通常(但并非总是)是 URI) ,则该属性值的别名必须在 xpath 参数中的元素名称前缀。 例如,假设树如下所示:

<Day>
  <Month xmlns="http://calendartypes.org/xsds/GregorianCalendar">
    <Week>something</Week>
  </Month>
</Day>

xpath 必须<Week>是 /Day/greg:Month/Week,其中 greg 是映射到 namespaceMappings 参数中“http://calendartypes.org/xsds/GregorianCalendar”的别名。

deleteElement(xpath, namespaceMappings)

删除由 xpath 标识的元素。

deleteElement(xpath: string, namespaceMappings: {
            [key: string]: string;
        }): void;

参数

xpath

string

XPath 表示法中单个元素的绝对路径。

namespaceMappings

{ [key: string]: string; }

一个对象,其属性值是命名空间名称,其属性名称是相应命名空间的别名。 例如, {greg: "http://calendartypes.org/xsds/GregorianCalendar"}. 属性名称 (如“greg”) 可以是任何不使用保留 XPath 字符的字符串,例如正斜杠“/”。

返回

void

注解

API 集:WordApi 1.4

如果树中的任何元素具有 xmlns 属性 (其值通常(但并非总是)是 URI) ,则该属性值的别名必须在 xpath 参数中的元素名称前缀。 例如,假设树如下所示:

<Day>
  <Month xmlns="http://calendartypes.org/xsds/GregorianCalendar">
    <Week>something</Week>
  </Month>
</Day>

xpath 必须<Week>是 /Day/greg:Month/Week,其中 greg 是映射到 namespaceMappings 参数中“http://calendartypes.org/xsds/GregorianCalendar”的别名。

getXml()

获取自定义 XML 部分的完整 XML 内容。

getXml(): OfficeExtension.ClientResult<string>;

返回

注解

API 集:WordApi 1.4

示例

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part-ns.yaml

// Adds a custom XML part.
// If you want to populate the CustomXml.namespaceUri property, you must include the xmlns attribute.
await Word.run(async (context) => {
  const originalXml =
    "<Reviewers xmlns='http://schemas.contoso.com/review/1.0'><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>";
  const customXmlPart = context.document.customXmlParts.add(originalXml);
  customXmlPart.load(["id", "namespaceUri"]);
  const xmlBlob = customXmlPart.getXml();

  await context.sync();

  const readableXml = addLineBreaksToXML(xmlBlob.value);
  console.log(`Added custom XML part with namespace URI ${customXmlPart.namespaceUri}:`, readableXml);

  // Store the XML part's ID in a setting so the ID is available to other functions.
  const settings: Word.SettingCollection = context.document.settings;
  settings.add("ContosoReviewXmlPartIdNS", customXmlPart.id);

  await context.sync();
});

...

// Adds a custom XML part.
await Word.run(async (context) => {
  const originalXml =
    "<Reviewers><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>";
  const customXmlPart: Word.CustomXmlPart = context.document.customXmlParts.add(originalXml);
  customXmlPart.load("id");
  const xmlBlob = customXmlPart.getXml();

  await context.sync();

  const readableXml = addLineBreaksToXML(xmlBlob.value);
  console.log("Added custom XML part:", readableXml);

  // Store the XML part's ID in a setting so the ID is available to other functions.
  const settings: Word.SettingCollection = context.document.settings;
  settings.add("ContosoReviewXmlPartId", customXmlPart.id);

  await context.sync();
});

insertAttribute(xpath, namespaceMappings, name, value)

将具有给定名称和值的属性插入到 xpath 标识的元素。

insertAttribute(xpath: string, namespaceMappings: {
            [key: string]: string;
        }, name: string, value: string): void;

参数

xpath

string

XPath 表示法中单个元素的绝对路径。

namespaceMappings

{ [key: string]: string; }

一个对象,其属性值是命名空间名称,其属性名称是相应命名空间的别名。 例如, {greg: "http://calendartypes.org/xsds/GregorianCalendar"}. 属性名称 (如“greg”) 可以是任何不使用保留 XPath 字符的字符串,例如正斜杠“/”。

name

string

属性的名称。

value

string

属性的值。

返回

void

注解

API 集:WordApi 1.4

如果树中的任何元素具有 xmlns 属性 (其值通常(但并非总是)是 URI) ,则该属性值的别名必须在 xpath 参数中的元素名称前缀。 例如,假设树如下所示:

<Day>
  <Month xmlns="http://calendartypes.org/xsds/GregorianCalendar">
    <Week>something</Week>
  </Month>
</Day>

xpath 必须<Week>是 /Day/greg:Month/Week,其中 greg 是映射到 namespaceMappings 参数中“http://calendartypes.org/xsds/GregorianCalendar”的别名。

示例

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part-ns.yaml

// Original XML: <Reviewers xmlns='http://schemas.contoso.com/review/1.0'><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>

// Inserts an attribute into a custom XML part.
await Word.run(async (context) => {
  const settings: Word.SettingCollection = context.document.settings;
  const xmlPartIDSetting: Word.Setting = settings.getItemOrNullObject("ContosoReviewXmlPartIdNS").load("value");
  await context.sync();

  if (xmlPartIDSetting.value) {
    const customXmlPart: Word.CustomXmlPart = context.document.customXmlParts.getItem(xmlPartIDSetting.value);

    // The insertAttribute method inserts an attribute with the given name and value into the element identified by the xpath parameter.
    customXmlPart.insertAttribute(
      "/contoso:Reviewers",
      { contoso: "http://schemas.contoso.com/review/1.0" },
      "Nation",
      "US"
    );
    const xmlBlob = customXmlPart.getXml();
    await context.sync();

    const readableXml = addLineBreaksToXML(xmlBlob.value);
    console.log("Successfully inserted attribute:", readableXml);
  } else {
    console.warn("Didn't find custom XML part to insert attribute into.");
  }
});

...

// Original XML: <Reviewers><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>

// Inserts an attribute into a custom XML part.
await Word.run(async (context) => {
  const settings: Word.SettingCollection = context.document.settings;
  const xmlPartIDSetting: Word.Setting = settings.getItemOrNullObject("ContosoReviewXmlPartId").load("value");
  await context.sync();

  if (xmlPartIDSetting.value) {
    const customXmlPart: Word.CustomXmlPart = context.document.customXmlParts.getItem(xmlPartIDSetting.value);

    // The insertAttribute method inserts an attribute with the given name and value into the element identified by the xpath parameter.
    customXmlPart.insertAttribute("/Reviewers", { contoso: "http://schemas.contoso.com/review/1.0" }, "Nation", "US");
    const xmlBlob = customXmlPart.getXml();
    await context.sync();

    const readableXml = addLineBreaksToXML(xmlBlob.value);
    console.log("Successfully inserted attribute:", readableXml);
  } else {
    console.warn("Didn't find custom XML part to insert attribute into.");
  }
});

insertElement(xpath, xml, namespaceMappings, index)

在子位置索引处由 xpath 标识的父元素下方插入给定的 XML。

insertElement(xpath: string, xml: string, namespaceMappings: {
            [key: string]: string;
        }, index?: number): void;

参数

xpath

string

XPath 表示法中单父元素的绝对路径。

xml

string

要插入的 XML 内容。

namespaceMappings

{ [key: string]: string; }

一个对象,其属性值是命名空间名称,其属性名称是相应命名空间的别名。 例如, {greg: "http://calendartypes.org/xsds/GregorianCalendar"}. 属性名称 (如“greg”) 可以是任何不使用保留 XPath 字符的字符串,例如正斜杠“/”。

index

number

可选。 要插入新 XML 的从零开始的位置。 如果省略,XML 将作为此父级的最后一个子级追加。

返回

void

注解

API 集:WordApi 1.4

如果树中的任何元素具有 xmlns 属性 (其值通常(但并非总是)是 URI) ,则该属性值的别名必须在 xpath 参数中的元素名称前缀。 例如,假设树如下所示:

<Day>
  <Month xmlns="http://calendartypes.org/xsds/GregorianCalendar">
    <Week>something</Week>
  </Month>
</Day>

xpath 必须<Week>是 /Day/greg:Month/Week,其中 greg 是映射到 namespaceMappings 参数中“http://calendartypes.org/xsds/GregorianCalendar”的别名。

示例

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part-ns.yaml

// Original XML: <Reviewers xmlns='http://schemas.contoso.com/review/1.0'><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>

// Inserts an element into a custom XML part.
await Word.run(async (context) => {
  const settings: Word.SettingCollection = context.document.settings;
  const xmlPartIDSetting: Word.Setting = settings.getItemOrNullObject("ContosoReviewXmlPartIdNS").load("value");
  await context.sync();

  if (xmlPartIDSetting.value) {
    const customXmlPart: Word.CustomXmlPart = context.document.customXmlParts.getItem(xmlPartIDSetting.value);

    // The insertElement method inserts the given XML under the parent element identified by the xpath parameter at the provided child position index.
    customXmlPart.insertElement(
      "/contoso:Reviewers",
      "<Lead>Mark</Lead>",
      { contoso: "http://schemas.contoso.com/review/1.0" },
      0
    );
    const xmlBlob = customXmlPart.getXml();
    await context.sync();

    const readableXml = addLineBreaksToXML(xmlBlob.value);
    console.log("Successfully inserted element:", readableXml);
  } else {
    console.warn("Didn't find custom XML part to insert element into.");
  }
});

...

// Original XML: <Reviewers><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>

// Inserts an element into a custom XML part.
await Word.run(async (context) => {
  const settings: Word.SettingCollection = context.document.settings;
  const xmlPartIDSetting: Word.Setting = settings.getItemOrNullObject("ContosoReviewXmlPartId").load("value");
  await context.sync();

  if (xmlPartIDSetting.value) {
    const customXmlPart: Word.CustomXmlPart = context.document.customXmlParts.getItem(xmlPartIDSetting.value);

    // The insertElement method inserts the given XML under the parent element identified by the xpath parameter at the provided child position index.
    customXmlPart.insertElement(
      "/Reviewers",
      "<Lead>Mark</Lead>",
      { contoso: "http://schemas.contoso.com/review/1.0" },
      0
    );
    const xmlBlob = customXmlPart.getXml();
    await context.sync();

    const readableXml = addLineBreaksToXML(xmlBlob.value);
    console.log("Successfully inserted element:", readableXml);
  } else {
    console.warn("Didn't find custom XML part to insert element into.");
  }
});

load(options)

将命令加入队列以加载对象的指定属性。 阅读属性前必须先调用 context.sync()

load(options?: Word.Interfaces.CustomXmlPartLoadOptions): Word.CustomXmlPart;

参数

options
Word.Interfaces.CustomXmlPartLoadOptions

为要加载的对象属性提供选项。

返回

load(propertyNames)

将命令加入队列以加载对象的指定属性。 阅读属性前必须先调用 context.sync()

load(propertyNames?: string | string[]): Word.CustomXmlPart;

参数

propertyNames

string | string[]

指定要加载的属性的逗号分隔的字符串或字符串数组。

返回

load(propertyNamesAndPaths)

将命令加入队列以加载对象的指定属性。 阅读属性前必须先调用 context.sync()

load(propertyNamesAndPaths?: {
            select?: string;
            expand?: string;
        }): Word.CustomXmlPart;

参数

propertyNamesAndPaths

{ select?: string; expand?: string; }

propertyNamesAndPaths.select 是指定要加载的属性的逗号分隔字符串,以及 propertyNamesAndPaths.expand 指定要加载的导航属性的逗号分隔字符串。

返回

loadXml(xml)

从 XML 字符串填充 CustomXmlPart 对象。

loadXml(xml: string): OfficeExtension.ClientResult<boolean>;

参数

xml

string

要加载的 XML 字符串。

返回

注解

API 集:WordApiDesktop 1.3

query(xpath, namespaceMappings)

查询自定义 XML 部分的 XML 内容。

query(xpath: string, namespaceMappings: {
            [key: string]: string;
        }): OfficeExtension.ClientResult<string[]>;

参数

xpath

string

XPath 查询。

namespaceMappings

{ [key: string]: string; }

一个对象,其属性值是命名空间名称,其属性名称是相应命名空间的别名。 例如, {greg: "http://calendartypes.org/xsds/GregorianCalendar"}. 属性名称 (如“greg”) 可以是任何不使用保留 XPath 字符的字符串,例如正斜杠“/”。

返回

一个数组,其中每个项目代表与 XPath 查询匹配的条目。

注解

API 集:WordApi 1.4

如果树中的任何元素具有 xmlns 属性 (其值通常(但并非总是)是 URI) ,则该属性值的别名必须在 xpath 参数中的元素名称前缀。 例如,假设树如下所示:

<Day>
  <Month xmlns="http://calendartypes.org/xsds/GregorianCalendar">
    <Week>something</Week>
  </Month>
</Day>

xpath 必须<Week>是 /Day/greg:Month/Week,其中 greg 是映射到 namespaceMappings 参数中“http://calendartypes.org/xsds/GregorianCalendar”的别名。

示例

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part-ns.yaml

// Original XML: <Reviewers xmlns='http://schemas.contoso.com/review/1.0'><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>

// Queries a custom XML part for elements matching the search terms.
await Word.run(async (context) => {
  const settings: Word.SettingCollection = context.document.settings;
  const xmlPartIDSetting: Word.Setting = settings.getItemOrNullObject("ContosoReviewXmlPartIdNS").load("value");

  await context.sync();

  if (xmlPartIDSetting.value) {
    const customXmlPart: Word.CustomXmlPart = context.document.customXmlParts.getItem(xmlPartIDSetting.value);
    const xpathToQueryFor = "/contoso:Reviewers";
    const clientResult = customXmlPart.query(xpathToQueryFor, {
      contoso: "http://schemas.contoso.com/review/1.0"
    });

    await context.sync();

    console.log(`Queried custom XML part for ${xpathToQueryFor} and found ${clientResult.value.length} matches:`);
    for (let i = 0; i < clientResult.value.length; i++) {
      console.log(clientResult.value[i]);
    }
  } else {
    console.warn("Didn't find custom XML part to query.");
  }
});

...

// Original XML: <Reviewers><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>

// Queries a custom XML part for elements matching the search terms.
await Word.run(async (context) => {
  const settings: Word.SettingCollection = context.document.settings;
  const xmlPartIDSetting: Word.Setting = settings.getItemOrNullObject("ContosoReviewXmlPartId").load("value");

  await context.sync();

  if (xmlPartIDSetting.value) {
    const customXmlPart: Word.CustomXmlPart = context.document.customXmlParts.getItem(xmlPartIDSetting.value);
    const xpathToQueryFor = "/Reviewers/Reviewer";
    const clientResult = customXmlPart.query(xpathToQueryFor, {
      contoso: "http://schemas.contoso.com/review/1.0"
    });

    await context.sync();

    console.log(`Queried custom XML part for ${xpathToQueryFor} and found ${clientResult.value.length} matches:`);
    for (let i = 0; i < clientResult.value.length; i++) {
      console.log(clientResult.value[i]);
    }
  } else {
    console.warn("Didn't find custom XML part to query.");
  }
});

selectNodes(xPath)

从自定义 XML 部件中选择节点集合。

selectNodes(xPath: string): Word.CustomXmlNodeCollection;

参数

xPath

string

要计算的 XPath 表达式。

返回

注解

API 集:WordApiDesktop 1.3

selectSingleNode(xPath)

选择自定义 XML 部件内与 XPath 表达式匹配的单个节点。

selectSingleNode(xPath: string): Word.CustomXmlNode;

参数

xPath

string

要计算的 XPath 表达式。

返回

注解

API 集:WordApiDesktop 1.3

set(properties, options)

同时设置对象的多个属性。 可以传递具有相应属性的纯文本对象,也可以传递另一个相同类型的 API 对象。

set(properties: Interfaces.CustomXmlPartUpdateData, options?: OfficeExtension.UpdateOptions): void;

参数

properties
Word.Interfaces.CustomXmlPartUpdateData

一个 JavaScript 对象,其属性与调用该方法的对象的属性同构结构。

options
OfficeExtension.UpdateOptions

提供一个选项,用于在 properties 对象尝试设置任何只读属性时禁止错误。

返回

void

set(properties)

基于现有加载的对象,同时在对象上设置多个属性。

set(properties: Word.CustomXmlPart): void;

参数

properties
Word.CustomXmlPart

返回

void

setXml(xml)

设置自定义 XML 部分的完整 XML 内容。

setXml(xml: string): void;

参数

xml

string

要设置的 XML 内容。

返回

void

注解

API 集:WordApi 1.4

示例

// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part-ns.yaml

// Original XML: <Reviewers xmlns='http://schemas.contoso.com/review/1.0'><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>

// Replaces a custom XML part.
await Word.run(async (context) => {
  const settings: Word.SettingCollection = context.document.settings;
  const xmlPartIDSetting: Word.Setting = settings.getItemOrNullObject("ContosoReviewXmlPartIdNS").load("value");
  await context.sync();

  if (xmlPartIDSetting.value) {
    const customXmlPart: Word.CustomXmlPart = context.document.customXmlParts.getItem(xmlPartIDSetting.value);
    const originalXmlBlob = customXmlPart.getXml();
    await context.sync();

    let readableXml = addLineBreaksToXML(originalXmlBlob.value);
    console.log("Original custom XML part:", readableXml);

    // The setXml method replaces the entire XML part.
    customXmlPart.setXml(
      "<Reviewers xmlns='http://schemas.contoso.com/review/1.0'><Reviewer>John</Reviewer><Reviewer>Hitomi</Reviewer></Reviewers>"
    );
    const updatedXmlBlob = customXmlPart.getXml();
    await context.sync();

    readableXml = addLineBreaksToXML(updatedXmlBlob.value);
    console.log("Replaced custom XML part:", readableXml);
  } else {
    console.warn("Didn't find custom XML part to replace.");
  }
});

toJSON()

覆盖 JavaScript toJSON() 方法,以便在将 API 对象传递给 JSON.stringify()时提供更有用的输出。 (JSON.stringify反过来调用 toJSON 传递给它的对象的方法。) 虽然原始 Word.CustomXmlPart 对象是 API 对象, toJSON 但该方法返回一个纯 JavaScript 对象, (类型化为 Word.Interfaces.CustomXmlPartData) ,其中包含从原始对象加载的任何子属性的浅层副本。

toJSON(): Word.Interfaces.CustomXmlPartData;

返回

track()

根据文档中的相应更改来跟踪对象,以便进行自动调整。 此调用是 context.trackedObjects.add (thisObject) 的简写。 如果在调用中 .sync 使用此对象,并且在“.run”批处理的顺序执行之外使用此对象,并且在设置属性或对对象调用方法时收到“InvalidObjectPath”错误,则需要在首次创建对象时将对象添加到跟踪对象集合。 如果此对象是集合的一部分,您还应跟踪父集合。

track(): Word.CustomXmlPart;

返回

untrack()

释放与此对象关联的内存(如果先前已跟踪过)。 此调用是 context.trackedObjects.remove (thisObject) 的简写。 拥有许多跟踪对象会降低主机应用程序的速度,因此请在使用完毕后释放所添加的任何对象。 需要在内存释放生效之前调用 context.sync()

untrack(): Word.CustomXmlPart;

返回

updateAttribute(xpath, namespaceMappings, name, value)

使用 xpath 标识的元素的给定名称汇报属性的值。

updateAttribute(xpath: string, namespaceMappings: {
            [key: string]: string;
        }, name: string, value: string): void;

参数

xpath

string

XPath 表示法中单个元素的绝对路径。

namespaceMappings

{ [key: string]: string; }

一个对象,其属性值是命名空间名称,其属性名称是相应命名空间的别名。 例如, {greg: "http://calendartypes.org/xsds/GregorianCalendar"}. 属性名称 (如“greg”) 可以是任何不使用保留 XPath 字符的字符串,例如正斜杠“/”。

name

string

属性的名称。

value

string

属性的新值。

返回

void

注解

API 集:WordApi 1.4

如果树中的任何元素具有 xmlns 属性 (其值通常(但并非总是)是 URI) ,则该属性值的别名必须在 xpath 参数中的元素名称前缀。 例如,假设树如下所示:

<Day>
  <Month xmlns="http://calendartypes.org/xsds/GregorianCalendar">
    <Week>something</Week>
  </Month>
</Day>

xpath 必须<Week>是 /Day/greg:Month/Week,其中 greg 是映射到 namespaceMappings 参数中“http://calendartypes.org/xsds/GregorianCalendar”的别名。

updateElement(xpath, xml, namespaceMappings)

汇报 xpath 标识的元素的 XML。

updateElement(xpath: string, xml: string, namespaceMappings: {
            [key: string]: string;
        }): void;

参数

xpath

string

XPath 表示法中单个元素的绝对路径。

xml

string

要存储的新 XML 内容。

namespaceMappings

{ [key: string]: string; }

一个对象,其属性值是命名空间名称,其属性名称是相应命名空间的别名。 例如, {greg: "http://calendartypes.org/xsds/GregorianCalendar"}. 属性名称 (如“greg”) 可以是任何不使用保留 XPath 字符的字符串,例如正斜杠“/”。

返回

void

注解

API 集:WordApi 1.4

如果树中的任何元素具有 xmlns 属性 (其值通常(但并非总是)是 URI) ,则该属性值的别名必须在 xpath 参数中的元素名称前缀。 例如,假设树如下所示:

<Day>
  <Month xmlns="http://calendartypes.org/xsds/GregorianCalendar">
    <Week>something</Week>
  </Month>
</Day>

xpath 必须<Week>是 /Day/greg:Month/Week,其中 greg 是映射到 namespaceMappings 参数中“http://calendartypes.org/xsds/GregorianCalendar”的别名。