Word.CustomXmlPart class
表示自定义 XML 部分。
注解
使用方
- Word.CustomXmlNode: ownerPart
- Word.CustomXmlPartCollection: add, getItem, getItemOrNullObject, items
- Word.CustomXmlPartScopedCollection: getItem, getItemOrNullObject, getOnlyItem, getOnlyItemOrNullObject, items
- Word.文档:selectUnlinkedControls
- Word.XmlMapping: customXmlPart
- Word.XmlSetMappingOptions: source
示例
// 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();
});
属性
| built |
获取 是否 |
| context | 与对象关联的请求上下文。 这将加载项的进程连接到 Office 主机应用程序的进程。 |
| document |
获取文档中数据的绑定区域的根元素。 如果区域为空,则属性返回 |
| errors | 获取提供 |
| id | 获取自定义 XML 部分的 ID。 |
| namespace |
获取用于当前 |
| namespace |
获取自定义 XML 部分的命名空间 URI。 |
| schema |
指定表示 |
| xml | 获取当前 |
方法
| add |
将节点添加到 XML 树。 |
| delete() | 删除自定义 XML 部件。 |
| delete |
从 xpath 标识的元素中删除具有给定名称的属性。 |
| delete |
删除由 xpath 标识的元素。 |
| get |
获取自定义 XML 部分的完整 XML 内容。 |
| insert |
将具有给定名称和值的属性插入到 xpath 标识的元素。 |
| insert |
在子位置索引处由 xpath 标识的父元素下方插入给定的 XML。 |
| load(options) | 将命令加入队列以加载对象的指定属性。 阅读属性前必须先调用 |
| load(property |
将命令加入队列以加载对象的指定属性。 阅读属性前必须先调用 |
| load(property |
将命令加入队列以加载对象的指定属性。 阅读属性前必须先调用 |
| load |
从 XML 字符串填充 |
| query(xpath, namespace |
查询自定义 XML 部分的 XML 内容。 |
| select |
从自定义 XML 部件中选择节点集合。 |
| select |
选择自定义 XML 部件内与 XPath 表达式匹配的单个节点。 |
| set(properties, options) | 同时设置对象的多个属性。 可以传递具有相应属性的纯文本对象,也可以传递另一个相同类型的 API 对象。 |
| set(properties) | 基于现有加载的对象,同时在对象上设置多个属性。 |
| set |
设置自定义 XML 部分的完整 XML 内容。 |
| toJSON() | 覆盖 JavaScript |
| track() | 根据文档中的相应更改来跟踪对象,以便进行自动调整。 此调用是 context.trackedObjects.add (thisObject) 的简写。 如果在调用中 |
| untrack() | 释放与此对象关联的内存(如果先前已跟踪过)。 此调用是 context.trackedObjects.remove (thisObject) 的简写。 拥有许多跟踪对象会降低主机应用程序的速度,因此请在使用完毕后释放所添加的任何对象。 需要在内存释放生效之前调用 |
| update |
使用 xpath 标识的元素的给定名称汇报属性的值。 |
| update |
汇报 xpath 标识的元素的 XML。 |
属性详细信息
builtIn
context
documentElement
获取文档中数据的绑定区域的根元素。 如果区域为空,则属性返回 Nothing。
readonly documentElement: Word.CustomXmlNode;
属性值
注解
errors
注意
此 API 以预览状态提供给开发者,可能根据我们收到的反馈更改。 请勿在生产环境中使用此 API。
获取提供 CustomXmlValidationErrorCollection 对任何 XML 验证错误的访问权限的对象。
readonly errors: Word.CustomXmlValidationErrorCollection;
属性值
注解
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();
});
namespaceManager
获取用于当前 CustomXmlPart 对象的命名空间前缀映射集。
readonly namespaceManager: Word.CustomXmlPrefixMappingCollection;
属性值
注解
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.");
}
});
schemaCollection
指定表示 CustomXmlSchemaCollection 附加到文档中数据的绑定区域的架构集的对象。
schemaCollection: Word.CustomXmlSchemaCollection;
属性值
注解
xml
方法详细信息
addNode(parent, options)
将节点添加到 XML 树。
addNode(parent: Word.CustomXmlNode, options?: Word.CustomXmlAddNodeOptions): OfficeExtension.ClientResult<number>;
参数
- parent
- Word.CustomXmlNode
要添加新节点的父节点。
- options
- Word.CustomXmlAddNodeOptions
可选。 定义要添加的节点的选项。
返回
OfficeExtension.ClientResult<number>
注解
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>
xpath 必须<Week>是 /Day/greg:Month/Week,其中 greg 是映射到 namespaceMappings 参数中“http://calendartypes.org/xsds/GregorianCalendar”的别名。
deleteElement(xpath, namespaceMappings)
删除由 xpath 标识的元素。
deleteElement(xpath: string, namespaceMappings: {
[key: string]: string;
}): void;
参数
- xpath
-
string
XPath 表示法中单个元素的绝对路径。
- namespaceMappings
-
{ [key: string]: string; }
一个对象,其属性值是命名空间名称,其属性名称是相应命名空间的别名。 例如, {greg: "http://calendartypes.org/xsds/GregorianCalendar"}. 属性名称 (如“greg”) 可以是任何不使用保留 XPath 字符的字符串,例如正斜杠“/”。
返回
void
注解
如果树中的任何元素具有 xmlns 属性 (其值通常(但并非总是)是 URI) ,则该属性值的别名必须在 xpath 参数中的元素名称前缀。 例如,假设树如下所示:
<Day>
<Month xmlns="http://calendartypes.org/xsds/GregorianCalendar">
<Week>something</Week>
</Month>
</Day>
xpath 必须<Week>是 /Day/greg:Month/Week,其中 greg 是映射到 namespaceMappings 参数中“http://calendartypes.org/xsds/GregorianCalendar”的别名。
getXml()
获取自定义 XML 部分的完整 XML 内容。
getXml(): OfficeExtension.ClientResult<string>;
返回
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>
xpath 必须<Week>是 /Day/greg:Month/Week,其中 greg 是映射到 namespaceMappings 参数中“http://calendartypes.org/xsds/GregorianCalendar”的别名。
示例
// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part-ns.yaml
// Original XML: <Reviewers xmlns='http://schemas.contoso.com/review/1.0'><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>
// Inserts an attribute into a custom XML part.
await Word.run(async (context) => {
const settings: Word.SettingCollection = context.document.settings;
const xmlPartIDSetting: Word.Setting = settings.getItemOrNullObject("ContosoReviewXmlPartIdNS").load("value");
await context.sync();
if (xmlPartIDSetting.value) {
const customXmlPart: Word.CustomXmlPart = context.document.customXmlParts.getItem(xmlPartIDSetting.value);
// The insertAttribute method inserts an attribute with the given name and value into the element identified by the xpath parameter.
customXmlPart.insertAttribute(
"/contoso:Reviewers",
{ contoso: "http://schemas.contoso.com/review/1.0" },
"Nation",
"US"
);
const xmlBlob = customXmlPart.getXml();
await context.sync();
const readableXml = addLineBreaksToXML(xmlBlob.value);
console.log("Successfully inserted attribute:", readableXml);
} else {
console.warn("Didn't find custom XML part to insert attribute into.");
}
});
...
// Original XML: <Reviewers><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>
// Inserts an attribute into a custom XML part.
await Word.run(async (context) => {
const settings: Word.SettingCollection = context.document.settings;
const xmlPartIDSetting: Word.Setting = settings.getItemOrNullObject("ContosoReviewXmlPartId").load("value");
await context.sync();
if (xmlPartIDSetting.value) {
const customXmlPart: Word.CustomXmlPart = context.document.customXmlParts.getItem(xmlPartIDSetting.value);
// The insertAttribute method inserts an attribute with the given name and value into the element identified by the xpath parameter.
customXmlPart.insertAttribute("/Reviewers", { contoso: "http://schemas.contoso.com/review/1.0" }, "Nation", "US");
const xmlBlob = customXmlPart.getXml();
await context.sync();
const readableXml = addLineBreaksToXML(xmlBlob.value);
console.log("Successfully inserted attribute:", readableXml);
} else {
console.warn("Didn't find custom XML part to insert attribute into.");
}
});
insertElement(xpath, xml, namespaceMappings, index)
在子位置索引处由 xpath 标识的父元素下方插入给定的 XML。
insertElement(xpath: string, xml: string, namespaceMappings: {
[key: string]: string;
}, index?: number): void;
参数
- xpath
-
string
XPath 表示法中单父元素的绝对路径。
- xml
-
string
要插入的 XML 内容。
- namespaceMappings
-
{ [key: string]: string; }
一个对象,其属性值是命名空间名称,其属性名称是相应命名空间的别名。 例如, {greg: "http://calendartypes.org/xsds/GregorianCalendar"}. 属性名称 (如“greg”) 可以是任何不使用保留 XPath 字符的字符串,例如正斜杠“/”。
- index
-
number
可选。 要插入新 XML 的从零开始的位置。 如果省略,XML 将作为此父级的最后一个子级追加。
返回
void
注解
如果树中的任何元素具有 xmlns 属性 (其值通常(但并非总是)是 URI) ,则该属性值的别名必须在 xpath 参数中的元素名称前缀。 例如,假设树如下所示:
<Day>
<Month xmlns="http://calendartypes.org/xsds/GregorianCalendar">
<Week>something</Week>
</Month>
</Day>
xpath 必须<Week>是 /Day/greg:Month/Week,其中 greg 是映射到 namespaceMappings 参数中“http://calendartypes.org/xsds/GregorianCalendar”的别名。
示例
// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part-ns.yaml
// Original XML: <Reviewers xmlns='http://schemas.contoso.com/review/1.0'><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>
// Inserts an element into a custom XML part.
await Word.run(async (context) => {
const settings: Word.SettingCollection = context.document.settings;
const xmlPartIDSetting: Word.Setting = settings.getItemOrNullObject("ContosoReviewXmlPartIdNS").load("value");
await context.sync();
if (xmlPartIDSetting.value) {
const customXmlPart: Word.CustomXmlPart = context.document.customXmlParts.getItem(xmlPartIDSetting.value);
// The insertElement method inserts the given XML under the parent element identified by the xpath parameter at the provided child position index.
customXmlPart.insertElement(
"/contoso:Reviewers",
"<Lead>Mark</Lead>",
{ contoso: "http://schemas.contoso.com/review/1.0" },
0
);
const xmlBlob = customXmlPart.getXml();
await context.sync();
const readableXml = addLineBreaksToXML(xmlBlob.value);
console.log("Successfully inserted element:", readableXml);
} else {
console.warn("Didn't find custom XML part to insert element into.");
}
});
...
// Original XML: <Reviewers><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>
// Inserts an element into a custom XML part.
await Word.run(async (context) => {
const settings: Word.SettingCollection = context.document.settings;
const xmlPartIDSetting: Word.Setting = settings.getItemOrNullObject("ContosoReviewXmlPartId").load("value");
await context.sync();
if (xmlPartIDSetting.value) {
const customXmlPart: Word.CustomXmlPart = context.document.customXmlParts.getItem(xmlPartIDSetting.value);
// The insertElement method inserts the given XML under the parent element identified by the xpath parameter at the provided child position index.
customXmlPart.insertElement(
"/Reviewers",
"<Lead>Mark</Lead>",
{ contoso: "http://schemas.contoso.com/review/1.0" },
0
);
const xmlBlob = customXmlPart.getXml();
await context.sync();
const readableXml = addLineBreaksToXML(xmlBlob.value);
console.log("Successfully inserted element:", readableXml);
} else {
console.warn("Didn't find custom XML part to insert element into.");
}
});
load(options)
将命令加入队列以加载对象的指定属性。 阅读属性前必须先调用 context.sync()。
load(options?: Word.Interfaces.CustomXmlPartLoadOptions): Word.CustomXmlPart;
参数
为要加载的对象属性提供选项。
返回
load(propertyNames)
将命令加入队列以加载对象的指定属性。 阅读属性前必须先调用 context.sync()。
load(propertyNames?: string | string[]): Word.CustomXmlPart;
参数
- propertyNames
-
string | string[]
指定要加载的属性的逗号分隔的字符串或字符串数组。
返回
load(propertyNamesAndPaths)
将命令加入队列以加载对象的指定属性。 阅读属性前必须先调用 context.sync()。
load(propertyNamesAndPaths?: {
select?: string;
expand?: string;
}): Word.CustomXmlPart;
参数
- propertyNamesAndPaths
-
{ select?: string; expand?: string; }
propertyNamesAndPaths.select 是指定要加载的属性的逗号分隔字符串,以及 propertyNamesAndPaths.expand 指定要加载的导航属性的逗号分隔字符串。
返回
loadXml(xml)
从 XML 字符串填充 CustomXmlPart 对象。
loadXml(xml: string): OfficeExtension.ClientResult<boolean>;
参数
- xml
-
string
要加载的 XML 字符串。
返回
OfficeExtension.ClientResult<boolean>
注解
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>
xpath 必须<Week>是 /Day/greg:Month/Week,其中 greg 是映射到 namespaceMappings 参数中“http://calendartypes.org/xsds/GregorianCalendar”的别名。
示例
// Link to full sample: https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/word/50-document/manage-custom-xml-part-ns.yaml
// Original XML: <Reviewers xmlns='http://schemas.contoso.com/review/1.0'><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>
// Queries a custom XML part for elements matching the search terms.
await Word.run(async (context) => {
const settings: Word.SettingCollection = context.document.settings;
const xmlPartIDSetting: Word.Setting = settings.getItemOrNullObject("ContosoReviewXmlPartIdNS").load("value");
await context.sync();
if (xmlPartIDSetting.value) {
const customXmlPart: Word.CustomXmlPart = context.document.customXmlParts.getItem(xmlPartIDSetting.value);
const xpathToQueryFor = "/contoso:Reviewers";
const clientResult = customXmlPart.query(xpathToQueryFor, {
contoso: "http://schemas.contoso.com/review/1.0"
});
await context.sync();
console.log(`Queried custom XML part for ${xpathToQueryFor} and found ${clientResult.value.length} matches:`);
for (let i = 0; i < clientResult.value.length; i++) {
console.log(clientResult.value[i]);
}
} else {
console.warn("Didn't find custom XML part to query.");
}
});
...
// Original XML: <Reviewers><Reviewer>Juan</Reviewer><Reviewer>Hong</Reviewer><Reviewer>Sally</Reviewer></Reviewers>
// Queries a custom XML part for elements matching the search terms.
await Word.run(async (context) => {
const settings: Word.SettingCollection = context.document.settings;
const xmlPartIDSetting: Word.Setting = settings.getItemOrNullObject("ContosoReviewXmlPartId").load("value");
await context.sync();
if (xmlPartIDSetting.value) {
const customXmlPart: Word.CustomXmlPart = context.document.customXmlParts.getItem(xmlPartIDSetting.value);
const xpathToQueryFor = "/Reviewers/Reviewer";
const clientResult = customXmlPart.query(xpathToQueryFor, {
contoso: "http://schemas.contoso.com/review/1.0"
});
await context.sync();
console.log(`Queried custom XML part for ${xpathToQueryFor} and found ${clientResult.value.length} matches:`);
for (let i = 0; i < clientResult.value.length; i++) {
console.log(clientResult.value[i]);
}
} else {
console.warn("Didn't find custom XML part to query.");
}
});
selectNodes(xPath)
从自定义 XML 部件中选择节点集合。
selectNodes(xPath: string): Word.CustomXmlNodeCollection;
参数
- xPath
-
string
要计算的 XPath 表达式。
返回
注解
selectSingleNode(xPath)
选择自定义 XML 部件内与 XPath 表达式匹配的单个节点。
selectSingleNode(xPath: string): Word.CustomXmlNode;
参数
- xPath
-
string
要计算的 XPath 表达式。
返回
注解
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
注解
示例
// 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>
xpath 必须<Week>是 /Day/greg:Month/Week,其中 greg 是映射到 namespaceMappings 参数中“http://calendartypes.org/xsds/GregorianCalendar”的别名。
updateElement(xpath, xml, namespaceMappings)
汇报 xpath 标识的元素的 XML。
updateElement(xpath: string, xml: string, namespaceMappings: {
[key: string]: string;
}): void;
参数
- xpath
-
string
XPath 表示法中单个元素的绝对路径。
- xml
-
string
要存储的新 XML 内容。
- namespaceMappings
-
{ [key: string]: string; }
一个对象,其属性值是命名空间名称,其属性名称是相应命名空间的别名。 例如, {greg: "http://calendartypes.org/xsds/GregorianCalendar"}. 属性名称 (如“greg”) 可以是任何不使用保留 XPath 字符的字符串,例如正斜杠“/”。
返回
void
注解
如果树中的任何元素具有 xmlns 属性 (其值通常(但并非总是)是 URI) ,则该属性值的别名必须在 xpath 参数中的元素名称前缀。 例如,假设树如下所示:
<Day>
<Month xmlns="http://calendartypes.org/xsds/GregorianCalendar">
<Week>something</Week>
</Month>
</Day>
xpath 必须<Week>是 /Day/greg:Month/Week,其中 greg 是映射到 namespaceMappings 参数中“http://calendartypes.org/xsds/GregorianCalendar”的别名。