Поделиться через


Word.CustomXmlPart class

Представляет настраиваемую XML-часть.

Extends

Комментарии

[ Набор 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();
});

Свойства

context

Контекст запроса, связанный с объектом . Это соединяет процесс надстройки с процессом ведущего приложения Office.

id

Возвращает идентификатор настраиваемой XML-части.

namespaceUri

Возвращает URI пространства имен настраиваемой 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)

Вставляет заданный XML-код под родительский элемент, определенный xpath в дочернем индексе позиции.

load(options)

Добавляет в очередь команду для загрузки указанных свойств объекта. Перед чтением свойств требуется вызвать метод context.sync().

load(propertyNames)

Добавляет в очередь команду для загрузки указанных свойств объекта. Перед чтением свойств требуется вызвать метод context.sync().

load(propertyNamesAndPaths)

Добавляет в очередь команду для загрузки указанных свойств объекта. Перед чтением свойств требуется вызвать метод context.sync().

query(xpath, namespaceMappings)

Запрашивает XML-содержимое пользовательской XML-части.

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)

Обновления XML-код элемента, определяемого xpath.

Сведения о свойстве

context

Контекст запроса, связанный с объектом . Это соединяет процесс надстройки с процессом ведущего приложения Office.

context: RequestContext;

Значение свойства

id

Возвращает идентификатор настраиваемой XML-части.

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();
});

namespaceUri

Возвращает URI пространства имен настраиваемой XML-части.

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.");
  }
});

Сведения о методе

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 — это псевдоним, сопоставленный с "http://calendartypes.org/xsds/GregorianCalendar" в параметре namespaceMappings.

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 — это псевдоним, сопоставленный с "http://calendartypes.org/xsds/GregorianCalendar" в параметре namespaceMappings.

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 — это псевдоним, сопоставленный с "http://calendartypes.org/xsds/GregorianCalendar" в параметре namespaceMappings.

Примеры

// 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)

Вставляет заданный XML-код под родительский элемент, определенный xpath в дочернем индексе позиции.

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 — это псевдоним, сопоставленный с "http://calendartypes.org/xsds/GregorianCalendar" в параметре namespaceMappings.

Примеры

// 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 строка с разделителями-запятыми, указывающая загружаемые свойства навигации.

Возвращаемое значение

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 — это псевдоним, сопоставленный с "http://calendartypes.org/xsds/GregorianCalendar" в параметре namespaceMappings.

Примеры

// 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.");
  }
});

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 — это псевдоним, сопоставленный с "http://calendartypes.org/xsds/GregorianCalendar" в параметре namespaceMappings.

updateElement(xpath, xml, namespaceMappings)

Обновления XML-код элемента, определяемого xpath.

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 — это псевдоним, сопоставленный с "http://calendartypes.org/xsds/GregorianCalendar" в параметре namespaceMappings.