Word.CustomXmlPart class
表示自定义 XML 部件。
- 扩展
注解
示例
// 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 部件的 ID。 |
namespace |
获取自定义 XML 部件的命名空间 URI。 |
方法
delete() | 删除自定义 XML 部件。 |
delete |
从 xpath 标识的元素中删除具有给定名称的属性。 |
delete |
删除 xpath 标识的元素。 |
get |
获取自定义 XML 部件的完整 XML 内容。 |
insert |
将具有给定名称和值的特性插入 xpath 标识的元素。 |
insert |
在子位置索引处 xpath 标识的父元素下插入给定的 XML。 |
load(options) | 将命令加入队列以加载对象的指定属性。 阅读属性前必须先调用 |
load(property |
将命令加入队列以加载对象的指定属性。 阅读属性前必须先调用 |
load(property |
将命令加入队列以加载对象的指定属性。 阅读属性前必须先调用 |
query(xpath, namespace |
查询自定义 XML 部件的 XML 内容。 |
set |
设置自定义 XML 部件的完整 XML 内容。 |
toJSON() | 重写 JavaScript |
track() | 根据文档中的相应更改来跟踪对象,以便进行自动调整。 此调用是 context.trackedObjects.add (thisObject) 的简写。 如果跨 |
untrack() | 释放与此对象关联的内存(如果先前已跟踪过)。 此调用是 context.trackedObjects.remove (thisObject) 的简写。 拥有许多跟踪对象会降低主机应用程序的速度,因此请在使用完毕后释放所添加的任何对象。 在内存发布生效之前,需要调用 |
update |
汇报具有 xpath 标识的元素的给定名称的属性的值。 |
update |
汇报 xpath 标识的元素的 XML。 |
属性详细信息
context
id
获取自定义 XML 部件的 ID。
readonly id: string;
属性值
string
注解
示例
// 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
获取自定义 XML 部件的命名空间 URI。
readonly namespaceUri: string;
属性值
string
注解
示例
// 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
注解
示例
// 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
注解
如果树中的任何元素具有 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
注解
如果树中的任何元素具有 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>;
返回
OfficeExtension.ClientResult<string>
注解
示例
// 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
注解
如果树中的任何元素具有 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
注解
如果树中的任何元素具有 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;
参数
提供要加载对象的属性的选项。
返回
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 保留字符的任何字符串,例如正斜杠“/”。
返回
OfficeExtension.ClientResult<string[]>
一个数组,其中每个项表示 XPath 查询匹配的条目。
注解
如果树中的任何元素具有 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.");
}
});
setXml(xml)
设置自定义 XML 部件的完整 XML 内容。
setXml(xml: string): void;
参数
- xml
-
string
必填。 要设置的 XML 内容。
返回
void
注解
示例
// 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
注解
如果树中的任何元素具有 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
注解
如果树中的任何元素具有 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”的别名。