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)

CustomXmlPart从 XML 字符串填充 对象。

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>

<Week> xpath 必须为 /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>

<Week> xpath 必须为 /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>

<Week> xpath 必须为 /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>

<Week> xpath 必须为 /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)

CustomXmlPart从 XML 字符串填充 对象。

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>

<Week> xpath 必须为 /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>

<Week> xpath 必须为 /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>

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