Word.CustomXmlPart class

Representa un elemento XML personalizado.

Extends

Comentarios

[ Conjunto de API: WordApi 1.4 ]

Propiedades

context

Contexto de solicitud asociado al objeto . Esto conecta el proceso del complemento al proceso de la aplicación host de Office.

id

Obtiene el identificador del elemento XML personalizado.

namespaceUri

Obtiene el URI del espacio de nombres del elemento XML personalizado.

Métodos

delete()

Elimina el elemento XML personalizado.

deleteAttribute(xpath, namespaceMappings, name)

Elimina un atributo con el nombre especificado del elemento identificado por xpath.

deleteElement(xpath, namespaceMappings)

Elimina el elemento identificado por xpath.

getXml()

Obtiene el contenido XML completo del elemento XML personalizado.

insertAttribute(xpath, namespaceMappings, name, value)

Inserta un atributo con el nombre y el valor especificados en el elemento identificado por xpath.

insertElement(xpath, xml, namespaceMappings, index)

Inserta el XML especificado en el elemento primario identificado por xpath en el índice de posición secundario.

load(options)

Pone en cola un comando para cargar las propiedades especificadas del objeto. Debe llamar a context.sync() antes de leer las propiedades.

load(propertyNames)

Pone en cola un comando para cargar las propiedades especificadas del objeto. Debe llamar a context.sync() antes de leer las propiedades.

load(propertyNamesAndPaths)

Pone en cola un comando para cargar las propiedades especificadas del objeto. Debe llamar a context.sync() antes de leer las propiedades.

query(xpath, namespaceMappings)

Consulta el contenido XML del elemento XML personalizado.

setXml(xml)

Establece el contenido XML completo del elemento XML personalizado.

toJSON()

Invalida el método JavaScript toJSON() para proporcionar una salida más útil cuando se pasa un objeto de API a JSON.stringify(). (JSON.stringifya su vez, llama al toJSON método del objeto que se le pasa). Mientras que el Word original. El objeto CustomXmlPart es un objeto de API, el toJSON método devuelve un objeto JavaScript sin formato (escrito como Word.Interfaces.CustomXmlPartData) que contiene copias superficiales de las propiedades secundarias cargadas del objeto original.

track()

Realiza un seguimiento del objeto de ajuste automático según cambios adyacentes en el documento. Esta llamada es una abreviatura para context.trackedObjects.add(thisObject). Si usa este objeto entre .sync llamadas y fuera de la ejecución secuencial de un lote ".run" y obtiene un error "InvalidObjectPath" al establecer una propiedad o invocar un método en el objeto, debe agregar el objeto a la colección de objetos de seguimiento cuando se creó el objeto por primera vez. Si este objeto forma parte de una colección, también debe realizar un seguimiento de la colección primaria.

untrack()

Libere la memoria asociada a este objeto, si se ha realizado un seguimiento de él anteriormente. Esta llamada es abreviada para context.trackedObjects.remove(thisObject). Tener muchos objetos marcados ralentiza la aplicación host, así que debe recordar liberar los objetos que agregue cuando haya terminado con ellos. Tendrá que llamar context.sync() a antes de que la versión de memoria surta efecto.

updateAttribute(xpath, namespaceMappings, name, value)

Novedades el valor de un atributo con el nombre especificado del elemento identificado por xpath.

updateElement(xpath, xml, namespaceMappings)

Novedades el XML del elemento identificado por xpath.

Detalles de las propiedades

context

Contexto de solicitud asociado al objeto . Esto conecta el proceso del complemento al proceso de la aplicación host de Office.

context: RequestContext;

Valor de propiedad

id

Obtiene el identificador del elemento XML personalizado.

readonly id: string;

Valor de propiedad

string

Comentarios

[ Conjunto de API: WordApi 1.4 ]

Ejemplos

// 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 = 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:");
  console.log(readableXml);

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

  await context.sync();
});

namespaceUri

Obtiene el URI del espacio de nombres del elemento XML personalizado.

readonly namespaceUri: string;

Valor de propiedad

string

Comentarios

[ Conjunto de API: WordApi 1.4 ]

Ejemplos

// 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 = context.document.settings;
  const xmlPartIDSetting = settings.getItemOrNullObject("ContosoReviewXmlPartIdNS").load("value");

  await context.sync();

  if (xmlPartIDSetting.value) {
    const 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");
  }
});

Detalles del método

delete()

Elimina el elemento XML personalizado.

delete(): void;

Devoluciones

void

Comentarios

[ Conjunto de API: WordApi 1.4 ]

Ejemplos

// 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 = context.document.settings;
  const xmlPartIDSetting = settings.getItemOrNullObject("ContosoReviewXmlPartId").load("value");
  await context.sync();

  if (xmlPartIDSetting.value) {
    let 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);
      const strangeMessage = `This is strange. The XML part with the id ${xmlPartIDSetting.value} wasn't deleted:\n${readableXml}`;
      console.error(strangeMessage);
    }
  } 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 = context.document.settings;
  const xmlPartIDSetting = settings.getItemOrNullObject("ContosoReviewXmlPartIdNS").load("value");
  await context.sync();

  if (xmlPartIDSetting.value) {
    let 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);
      const strangeMessage = `This is strange. The XML part with the id ${xmlPartIDSetting.value} wasn't deleted:\n${readableXml}`;
      console.error(strangeMessage);
    }
  } else {
    console.warn("Didn't find custom XML part to delete");
  }
});

deleteAttribute(xpath, namespaceMappings, name)

Elimina un atributo con el nombre especificado del elemento identificado por xpath.

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

Parámetros

xpath

string

Obligatorio. Ruta de acceso absoluta al elemento único en la notación XPath.

namespaceMappings

{ [key: string]: string; }

Obligatorio. Objeto cuyos valores de propiedad son nombres de espacio de nombres y cuyos nombres de propiedad son alias para los espacios de nombres correspondientes. Por ejemplo, {greg: "http://calendartypes.org/xsds/GregorianCalendar"}. Los nombres de propiedad (como "greg") pueden ser cualquier cadena que no use caracteres XPath reservados, como la barra diagonal "/".

name

string

Obligatorio. Nombre del atributo.

Devoluciones

void

Comentarios

[ Conjunto de API: WordApi 1.4 ]

Si algún elemento del árbol tiene un atributo xmlns (cuyo valor suele ser, pero no siempre, un URI), un alias para ese valor de atributo debe anteponer el nombre del elemento en el parámetro xpath. Por ejemplo, supongamos que el árbol es el siguiente:

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

El xpath para <Week> debe ser /Day/greg:Month/Week, donde greg es un alias que se asigna a "http://calendartypes.org/xsds/GregorianCalendar" en el parámetro namespaceMappings.

deleteElement(xpath, namespaceMappings)

Elimina el elemento identificado por xpath.

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

Parámetros

xpath

string

Obligatorio. Ruta de acceso absoluta al elemento único en la notación XPath.

namespaceMappings

{ [key: string]: string; }

Obligatorio. Objeto cuyos valores de propiedad son nombres de espacio de nombres y cuyos nombres de propiedad son alias para los espacios de nombres correspondientes. Por ejemplo, {greg: "http://calendartypes.org/xsds/GregorianCalendar"}. Los nombres de propiedad (como "greg") pueden ser cualquier cadena que no use caracteres XPath reservados, como la barra diagonal "/".

Devoluciones

void

Comentarios

[ Conjunto de API: WordApi 1.4 ]

Si algún elemento del árbol tiene un atributo xmlns (cuyo valor suele ser, pero no siempre, un URI), un alias para ese valor de atributo debe anteponer el nombre del elemento en el parámetro xpath. Por ejemplo, supongamos que el árbol es el siguiente:

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

El xpath para <Week> debe ser /Day/greg:Month/Week, donde greg es un alias que se asigna a "http://calendartypes.org/xsds/GregorianCalendar" en el parámetro namespaceMappings.

getXml()

Obtiene el contenido XML completo del elemento XML personalizado.

getXml(): OfficeExtension.ClientResult<string>;

Devoluciones

Comentarios

[ Conjunto de API: WordApi 1.4 ]

Ejemplos

// 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}:`);
  console.log(readableXml);

  // Store the XML part's ID in a setting so the ID is available to other functions.
  const settings = 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 = 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:");
  console.log(readableXml);

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

  await context.sync();
});

insertAttribute(xpath, namespaceMappings, name, value)

Inserta un atributo con el nombre y el valor especificados en el elemento identificado por xpath.

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

Parámetros

xpath

string

Obligatorio. Ruta de acceso absoluta al elemento único en la notación XPath.

namespaceMappings

{ [key: string]: string; }

Obligatorio. Objeto cuyos valores de propiedad son nombres de espacio de nombres y cuyos nombres de propiedad son alias para los espacios de nombres correspondientes. Por ejemplo, {greg: "http://calendartypes.org/xsds/GregorianCalendar"}. Los nombres de propiedad (como "greg") pueden ser cualquier cadena que no use caracteres XPath reservados, como la barra diagonal "/".

name

string

Obligatorio. Nombre del atributo.

value

string

Obligatorio. Valor del atributo.

Devoluciones

void

Comentarios

[ Conjunto de API: WordApi 1.4 ]

Si algún elemento del árbol tiene un atributo xmlns (cuyo valor suele ser, pero no siempre, un URI), un alias para ese valor de atributo debe anteponer el nombre del elemento en el parámetro xpath. Por ejemplo, supongamos que el árbol es el siguiente:

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

El xpath para <Week> debe ser /Day/greg:Month/Week, donde greg es un alias que se asigna a "http://calendartypes.org/xsds/GregorianCalendar" en el parámetro namespaceMappings.

Ejemplos

// 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 = context.document.settings;
  const xmlPartIDSetting = settings.getItemOrNullObject("ContosoReviewXmlPartIdNS").load("value");
  await context.sync();

  if (xmlPartIDSetting.value) {
    const 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:");
    console.log(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 = context.document.settings;
  const xmlPartIDSetting = settings.getItemOrNullObject("ContosoReviewXmlPartId").load("value");
  await context.sync();

  if (xmlPartIDSetting.value) {
    const 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:");
    console.log(readableXml);
  } else {
    console.warn("Didn't find custom XML part to insert attribute into");
  }
});

insertElement(xpath, xml, namespaceMappings, index)

Inserta el XML especificado en el elemento primario identificado por xpath en el índice de posición secundario.

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

Parámetros

xpath

string

Obligatorio. Ruta de acceso absoluta al elemento primario único en la notación XPath.

xml

string

Obligatorio. Contenido XML que se va a insertar.

namespaceMappings

{ [key: string]: string; }

Obligatorio. Objeto cuyos valores de propiedad son nombres de espacio de nombres y cuyos nombres de propiedad son alias para los espacios de nombres correspondientes. Por ejemplo, {greg: "http://calendartypes.org/xsds/GregorianCalendar"}. Los nombres de propiedad (como "greg") pueden ser cualquier cadena que no use caracteres XPath reservados, como la barra diagonal "/".

index

number

Opcional. Posición de base cero en la que se va a insertar el nuevo XML. Si se omite, el XML se anexará como el último elemento secundario de este elemento primario.

Devoluciones

void

Comentarios

[ Conjunto de API: WordApi 1.4 ]

Si algún elemento del árbol tiene un atributo xmlns (cuyo valor suele ser, pero no siempre, un URI), un alias para ese valor de atributo debe anteponer el nombre del elemento en el parámetro xpath. Por ejemplo, supongamos que el árbol es el siguiente:

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

El xpath para <Week> debe ser /Day/greg:Month/Week, donde greg es un alias que se asigna a "http://calendartypes.org/xsds/GregorianCalendar" en el parámetro namespaceMappings.

Ejemplos

// 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 = context.document.settings;
  const xmlPartIDSetting = settings.getItemOrNullObject("ContosoReviewXmlPartIdNS").load("value");
  await context.sync();

  if (xmlPartIDSetting.value) {
    const 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:");
    console.log(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 = context.document.settings;
  const xmlPartIDSetting = settings.getItemOrNullObject("ContosoReviewXmlPartId").load("value");
  await context.sync();

  if (xmlPartIDSetting.value) {
    const 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:");
    console.log(readableXml);
  } else {
    console.warn("Didn't find custom XML part to insert element into");
  }
});

load(options)

Pone en cola un comando para cargar las propiedades especificadas del objeto. Debe llamar a context.sync() antes de leer las propiedades.

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

Parámetros

options
Word.Interfaces.CustomXmlPartLoadOptions

Proporciona opciones para las propiedades del objeto que se van a cargar.

Devoluciones

load(propertyNames)

Pone en cola un comando para cargar las propiedades especificadas del objeto. Debe llamar a context.sync() antes de leer las propiedades.

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

Parámetros

propertyNames

string | string[]

Una cadena delimitada por comas o una matriz de cadenas que especifican las propiedades que se van a cargar.

Devoluciones

load(propertyNamesAndPaths)

Pone en cola un comando para cargar las propiedades especificadas del objeto. Debe llamar a context.sync() antes de leer las propiedades.

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

Parámetros

propertyNamesAndPaths

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

propertyNamesAndPaths.select es una cadena delimitada por comas que especifica las propiedades que se van a cargar y propertyNamesAndPaths.expand es una cadena delimitada por comas que especifica las propiedades de navegación que se van a cargar.

Devoluciones

query(xpath, namespaceMappings)

Consulta el contenido XML del elemento XML personalizado.

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

Parámetros

xpath

string

Obligatorio. Una consulta XPath.

namespaceMappings

{ [key: string]: string; }

Obligatorio. Objeto cuyos valores de propiedad son nombres de espacio de nombres y cuyos nombres de propiedad son alias para los espacios de nombres correspondientes. Por ejemplo, {greg: "http://calendartypes.org/xsds/GregorianCalendar"}. Los nombres de propiedad (como "greg") pueden ser cualquier cadena que no use caracteres XPath reservados, como la barra diagonal "/".

Devoluciones

Matriz en la que cada elemento representa una entrada coincidente con la consulta XPath.

Comentarios

[ Conjunto de API: WordApi 1.4 ]

Si algún elemento del árbol tiene un atributo xmlns (cuyo valor suele ser, pero no siempre, un URI), un alias para ese valor de atributo debe anteponer el nombre del elemento en el parámetro xpath. Por ejemplo, supongamos que el árbol es el siguiente:

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

El xpath para <Week> debe ser /Day/greg:Month/Week, donde greg es un alias que se asigna a "http://calendartypes.org/xsds/GregorianCalendar" en el parámetro namespaceMappings.

Ejemplos

// 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 = context.document.settings;
  const xmlPartIDSetting = settings.getItemOrNullObject("ContosoReviewXmlPartIdNS").load("value");

  await context.sync();

  if (xmlPartIDSetting.value) {
    const 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 = context.document.settings;
  const xmlPartIDSetting = settings.getItemOrNullObject("ContosoReviewXmlPartId").load("value");

  await context.sync();

  if (xmlPartIDSetting.value) {
    const 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)

Establece el contenido XML completo del elemento XML personalizado.

setXml(xml: string): void;

Parámetros

xml

string

Obligatorio. Contenido XML que se va a establecer.

Devoluciones

void

Comentarios

[ Conjunto de API: WordApi 1.4 ]

Ejemplos

// 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 = context.document.settings;
  const xmlPartIDSetting = settings.getItemOrNullObject("ContosoReviewXmlPartIdNS").load("value");
  await context.sync();

  if (xmlPartIDSetting.value) {
    const 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:");
    console.log(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:");
    console.log(readableXml);
  } else {
    console.warn("Didn't find custom XML part to replace");
  }
});

toJSON()

Invalida el método JavaScript toJSON() para proporcionar una salida más útil cuando se pasa un objeto de API a JSON.stringify(). (JSON.stringifya su vez, llama al toJSON método del objeto que se le pasa). Mientras que el Word original. El objeto CustomXmlPart es un objeto de API, el toJSON método devuelve un objeto JavaScript sin formato (escrito como Word.Interfaces.CustomXmlPartData) que contiene copias superficiales de las propiedades secundarias cargadas del objeto original.

toJSON(): Word.Interfaces.CustomXmlPartData;

Devoluciones

track()

Realiza un seguimiento del objeto de ajuste automático según cambios adyacentes en el documento. Esta llamada es una abreviatura para context.trackedObjects.add(thisObject). Si usa este objeto entre .sync llamadas y fuera de la ejecución secuencial de un lote ".run" y obtiene un error "InvalidObjectPath" al establecer una propiedad o invocar un método en el objeto, debe agregar el objeto a la colección de objetos de seguimiento cuando se creó el objeto por primera vez. Si este objeto forma parte de una colección, también debe realizar un seguimiento de la colección primaria.

track(): Word.CustomXmlPart;

Devoluciones

untrack()

Libere la memoria asociada a este objeto, si se ha realizado un seguimiento de él anteriormente. Esta llamada es abreviada para context.trackedObjects.remove(thisObject). Tener muchos objetos marcados ralentiza la aplicación host, así que debe recordar liberar los objetos que agregue cuando haya terminado con ellos. Tendrá que llamar context.sync() a antes de que la versión de memoria surta efecto.

untrack(): Word.CustomXmlPart;

Devoluciones

updateAttribute(xpath, namespaceMappings, name, value)

Novedades el valor de un atributo con el nombre especificado del elemento identificado por xpath.

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

Parámetros

xpath

string

Obligatorio. Ruta de acceso absoluta al elemento único en la notación XPath.

namespaceMappings

{ [key: string]: string; }

Obligatorio. Objeto cuyos valores de propiedad son nombres de espacio de nombres y cuyos nombres de propiedad son alias para los espacios de nombres correspondientes. Por ejemplo, {greg: "http://calendartypes.org/xsds/GregorianCalendar"}. Los nombres de propiedad (como "greg") pueden ser cualquier cadena que no use caracteres XPath reservados, como la barra diagonal "/".

name

string

Obligatorio. Nombre del atributo.

value

string

Obligatorio. Nuevo valor del atributo.

Devoluciones

void

Comentarios

[ Conjunto de API: WordApi 1.4 ]

Si algún elemento del árbol tiene un atributo xmlns (cuyo valor suele ser, pero no siempre, un URI), un alias para ese valor de atributo debe anteponer el nombre del elemento en el parámetro xpath. Por ejemplo, supongamos que el árbol es el siguiente:

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

El xpath para <Week> debe ser /Day/greg:Month/Week, donde greg es un alias que se asigna a "http://calendartypes.org/xsds/GregorianCalendar" en el parámetro namespaceMappings.

updateElement(xpath, xml, namespaceMappings)

Novedades el XML del elemento identificado por xpath.

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

Parámetros

xpath

string

Obligatorio. Ruta de acceso absoluta al elemento único en la notación XPath.

xml

string

Obligatorio. Nuevo contenido XML que se va a almacenar.

namespaceMappings

{ [key: string]: string; }

Obligatorio. Objeto cuyos valores de propiedad son nombres de espacio de nombres y cuyos nombres de propiedad son alias para los espacios de nombres correspondientes. Por ejemplo, {greg: "http://calendartypes.org/xsds/GregorianCalendar"}. Los nombres de propiedad (como "greg") pueden ser cualquier cadena que no use caracteres XPath reservados, como la barra diagonal "/".

Devoluciones

void

Comentarios

[ Conjunto de API: WordApi 1.4 ]

Si algún elemento del árbol tiene un atributo xmlns (cuyo valor suele ser, pero no siempre, un URI), un alias para ese valor de atributo debe anteponer el nombre del elemento en el parámetro xpath. Por ejemplo, supongamos que el árbol es el siguiente:

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

El xpath para <Week> debe ser /Day/greg:Month/Week, donde greg es un alias que se asigna a "http://calendartypes.org/xsds/GregorianCalendar" en el parámetro namespaceMappings.