# fsys.openXml.editor 库模块帮助文档

## fsys.openXml.editor 成员列表 <a id="fsys.openXml.editor" href="#fsys.openXml.editor">&#x23;</a>

现有 Office Open XML 包的受控替换与另存；不重建未知内容。

### fsys.openXml.editor.open() <a id="fsys.openXml.editor.open" href="#fsys.openXml.editor.open">&#x23;</a>
[返回对象:openXmlEditorObject](#openXmlEditorObject)

### fsys.openXml.editor.open(path,options) <a id="fsys.openXml.editor.open" href="#fsys.openXml.editor.open">&#x23;</a>
打开编辑会话；输入只读，含数字签名的包拒绝。读取限额同 open；失败 null,err。

## openXmlEditorObject 成员列表 <a id="openXmlEditorObject" href="#openXmlEditorObject">&#x23;</a>

### openXmlEditorObject.applyParts(parts) <a id="openXmlEditorObject.applyParts" href="#openXmlEditorObject.applyParts">&#x23;</a>
原子新增/替换/删除部件；{name,data,contentType} 新增时须指定内容类型，{name,remove=true} 删除。  
自动更新内容类型；不自动维护部件关系或语义，不允许删除主文档/包根关系。全部校验后提交内存；失败无部分修改。

### openXmlEditorObject.changedParts() <a id="openXmlEditorObject.changedParts" href="#openXmlEditorObject.changedParts">&#x23;</a>
返回显式改动的部件名称数组。

### openXmlEditorObject.close() <a id="openXmlEditorObject.close" href="#openXmlEditorObject.close">&#x23;</a>
关闭源 ZIP，可以重复调用；之后不再读写。

### openXmlEditorObject.getContentType(name) <a id="openXmlEditorObject.getContentType" href="#openXmlEditorObject.getContentType">&#x23;</a>
取得现有部件内容类型。

### openXmlEditorObject.getMainPart() <a id="openXmlEditorObject.getMainPart" href="#openXmlEditorObject.getMainPart">&#x23;</a>
定位原包主文档。

### openXmlEditorObject.getRelationships(sourcePart="字符串参数") <a id="openXmlEditorObject.getRelationships" href="#openXmlEditorObject.getRelationships">&#x23;</a>
读取当前关系；内部目标须存在，外部不访问。

### openXmlEditorObject.listParts() <a id="openXmlEditorObject.listParts" href="#openXmlEditorObject.listParts">&#x23;</a>
当前现有部件清单；返回普通表数组。

### openXmlEditorObject.path <a id="openXmlEditorObject.path" href="#openXmlEditorObject.path">&#x23;</a>
源包完整路径。

### openXmlEditorObject.readPart(name) <a id="openXmlEditorObject.readPart" href="#openXmlEditorObject.readPart">&#x23;</a>
优先读取修改后的数据，未修改时读取原始部件并校验 CRC。

### openXmlEditorObject.readXml() <a id="openXmlEditorObject.readXml" href="#openXmlEditorObject.readXml">&#x23;</a>
[返回对象:msXmlNodeObject](#msXmlNodeObject)

### openXmlEditorObject.readXml(name) <a id="openXmlEditorObject.readXml" href="#openXmlEditorObject.readXml">&#x23;</a>
返回当前部件的独立 MSXML DOM；修改后须显式 setXml，不会自动写回。

### openXmlEditorObject.save(outputPath,options) <a id="openXmlEditorObject.save" href="#openXmlEditorObject.save">&#x23;</a>
另存新包，默认不覆盖；即使 overwrite=true 也禁止覆盖源件/可识别别名。  
未修改部件的解压内容保持原字节，逐件 CRC 检查并重新压缩，不要求 ZIP 容器字节一致。  
失败不提交半成品，成功返回完整路径；不是压缩数据 raw-copy，无限大文件不受支持。

### openXmlEditorObject.setPart(name,data) <a id="openXmlEditorObject.setPart" href="#openXmlEditorObject.setPart">&#x23;</a>
替换现有部件字节串，不自动新增类型/关系；成功 true，失败 null,err。

### openXmlEditorObject.setParts(parts) <a id="openXmlEditorObject.setParts" href="#openXmlEditorObject.setParts">&#x23;</a>
批量替换现有部件；每项 name,data；先全部校验再提交内存修改，失败不部分修改。buffer 按当前字节复制。

### openXmlEditorObject.setXml(name,node) <a id="openXmlEditorObject.setXml" href="#openXmlEditorObject.setXml">&#x23;</a>
UTF-8 序列化 MSXML 文档根节点并替换现有部件；失败 null,err。
