Aspose.Words书签操作指南:删除与管理技巧
1. 理解Aspose.Words书签操作的基本原理在处理Word文档自动化时书签Bookmark是一个非常重要的导航和标记工具。Aspose.Words作为一款强大的文档处理库提供了完整的书签管理API。我们先要明确几个关键概念书签在Word文档中的本质是w:bookmarkStart和w:bookmarkEnd标签对它们定义了文档中的一个命名区域。当我们需要删除书签时实际上是要处理这对标签以及它们之间的内容关系。Aspose.Words中的书签主要通过Document.Range.Bookmarks集合来管理。这个集合包含了文档中所有的书签对象每个书签对象都对应着文档中的一个书签定义。理解这一点很重要因为删除操作需要精确控制这些对象的生命周期。重要提示书签删除操作是不可逆的执行前建议先保存文档副本或使用内存中的文档副本进行操作。2. 准备开发环境与基础代码在开始具体操作前我们需要确保开发环境正确配置。以C#为例首先通过NuGet安装Aspose.Words包Install-Package Aspose.Words基础代码结构如下using Aspose.Words; class Program { static void Main(string[] args) { // 加载文档 Document doc new Document(input.docx); // 书签操作将在这里进行 // 保存修改后的文档 doc.Save(output.docx); } }对于Java开发者对应的Maven依赖是dependency groupIdcom.aspose/groupId artifactIdaspose-words/artifactId version最新版本/version /dependency3. 删除单个指定书签的完整流程删除特定名称的书签是最常见的需求。以下是详细步骤和注意事项3.1 检查书签是否存在在尝试删除前应该先确认书签是否存在Bookmark bookmark doc.Range.Bookmarks[MyBookmark]; if (bookmark ! null) { // 书签存在可以执行删除 bookmark.Remove(); }这个检查非常重要因为直接访问不存在的书签会导致异常。3.2 删除书签的两种方式Aspose.Words提供了两种删除书签的方法仅删除书签标记保留内容bookmark.Remove();删除书签及其包含的内容bookmark.BookmarkStart.ParentNode.RemoveAllChildren();第二种方式会删除书签范围内的所有内容使用时需要特别注意。3.3 处理删除后的文档结构删除书签后文档的DOM结构可能发生变化。建议在删除操作后调用Document.Normalize()方法来优化文档结构doc.Normalize();这个步骤可以合并相邻的Run节点清理空段落等确保文档结构整洁。4. 批量删除书签的高级技巧当需要处理大量书签时单个删除效率较低。以下是几种批量处理方案4.1 删除所有书签foreach (Bookmark bookmark in doc.Range.Bookmarks.ToArray()) { bookmark.Remove(); }注意这里使用了ToArray()来创建副本避免在遍历时修改集合导致的异常。4.2 按条件筛选删除书签例如删除名称以Temp_开头的所有书签var bookmarksToRemove doc.Range.Bookmarks .CastBookmark() .Where(b b.Name.StartsWith(Temp_)) .ToList(); foreach (var bookmark in bookmarksToRemove) { bookmark.Remove(); }4.3 使用LINQ进行复杂筛选对于更复杂的场景可以结合LINQvar expiredBookmarks doc.Range.Bookmarks .CastBookmark() .Where(b b.Text.Contains(EXPIRED) || b.Name.EndsWith(_OLD)) .ToList();5. 书签删除的常见问题与解决方案5.1 书签嵌套问题当书签相互嵌套时删除顺序很重要。应该从最内层的书签开始删除// 按书签长度排序先删除短的书签假设是内层 var sortedBookmarks doc.Range.Bookmarks .CastBookmark() .OrderBy(b b.BookmarkEnd.Range.End - b.BookmarkStart.Range.Start) .ToList();5.2 跨段落书签处理对于跨段落的大书签直接删除可能导致文档结构破坏。建议先检查if (bookmark.FirstParagraph ! bookmark.LastParagraph) { // 处理跨段落书签的特殊逻辑 }5.3 性能优化建议处理大型文档时批量操作可以显著提升性能// 禁用实时布局计算 doc.LayoutOptions.RevisionOptions.ShowRevisionMarks false; // 执行批量删除 // ... // 重新启用并更新布局 doc.UpdatePageLayout();6. 与其他文档元素的交互影响书签删除操作可能会影响文档中的其他元素需要特别注意6.1 与目录(TOC)的关系如果书签被目录引用删除后需要更新目录// 删除书签后 foreach (Field field in doc.Range.Fields) { if (field.Type FieldType.FieldTOC) { field.Update(); } }6.2 与超链接的关联检查书签是否被超链接引用foreach (Field hyperlink in doc.Range.Fields.Where(f f.Type FieldType.FieldHyperlink)) { string ref hyperlink.GetFieldCode().Replace( HYPERLINK , ).Trim(); if (ref.StartsWith(\\l) doc.Range.Bookmarks[ref.Substring(2)] null) { // 处理失效的超链接 } }7. 实战案例清理文档中的临时书签假设我们需要清理文档中所有临时标记的书签名称以tmp_开头但保留内容Document doc new Document(report.docx); // 收集所有临时书签 var tempBookmarks doc.Range.Bookmarks .CastBookmark() .Where(b b.Name.StartsWith(tmp_)) .ToList(); // 按位置从后向前删除避免位置变化影响 foreach (var bookmark in tempBookmarks.OrderByDescending(b b.BookmarkStart.Position)) { Console.WriteLine($Removing bookmark: {bookmark.Name}); bookmark.Remove(); } // 优化文档结构 doc.Normalize(); // 验证结果 Console.WriteLine($Remaining bookmarks: {doc.Range.Bookmarks.Count}); doc.Save(report_clean.docx);这个例子展示了完整的处理流程包括文档加载书签筛选安全删除从后向前文档优化结果验证8. 扩展应用基于书签的文档自动化处理书签删除常常是文档自动化流程的一部分。一个典型的场景可能是使用书签标记文档中的可变区域用程序填充内容最后清理标记书签// 填充书签内容 Document doc new Document(template.docx); doc.Range.Bookmarks[customer_name].Text John Doe; // ...其他填充操作... // 清理所有模板标记书签 foreach (Bookmark bookmark in doc.Range.Bookmarks.ToArray()) { if (bookmark.Name.StartsWith(tpl_)) { bookmark.Remove(); } }这种模式在合同生成、报告自动化等场景非常有用。9. 跨平台注意事项Aspose.Words在不同平台上的API基本一致但有些细节差异9.1 Java版本的特殊处理Java中使用Document.getRange().getBookmarks()Document doc new Document(input.docx); BookmarkCollection bookmarks doc.getRange().getBookmarks(); // 删除特定书签 Bookmark bookmark bookmarks.get(MyBookmark); if (bookmark ! null) { bookmark.remove(); }9.2 处理大型文档的内存管理对于特别大的文档建议使用Document的构造函数重载来优化内存// 使用此构造函数可以更好地处理大文档 LoadOptions loadOptions new LoadOptions { MemoryOptimization true }; Document doc new Document(large_document.docx, loadOptions);10. 最佳实践与性能建议批量操作原则尽可能收集所有需要删除的书签然后一次性处理避免多次文档遍历。位置敏感处理当删除多个书签时从文档末尾开始向前处理可以避免位置变化带来的问题。异常处理总是包含适当的异常处理try { foreach (Bookmark bookmark in doc.Range.Bookmarks.ToArray()) { try { bookmark.Remove(); } catch (Exception ex) { Console.WriteLine($Error removing bookmark {bookmark.Name}: {ex.Message}); } } } catch (Exception ex) { Console.WriteLine($General error: {ex.Message}); }日志记录在批处理操作中记录删除的书签便于审计Liststring removedBookmarks new Liststring(); foreach (Bookmark bookmark in doc.Range.Bookmarks.ToArray()) { removedBookmarks.Add(bookmark.Name); bookmark.Remove(); } File.WriteAllLines(removed_bookmarks.log, removedBookmarks);版本兼容性注意不同版本的Aspose.Words可能在书签处理上有细微差异建议在代码中注明测试通过的版本// Tested with Aspose.Words 23.411. 调试技巧与验证方法为了确保书签删除操作按预期工作可以采用以下验证方法11.1 书签计数验证int initialCount doc.Range.Bookmarks.Count; // 执行删除操作 int finalCount doc.Range.Bookmarks.Count; Console.WriteLine($Removed {initialCount - finalCount} bookmarks);11.2 内容完整性检查比较删除前后的文档内容长度long initialLength doc.GetText().Length; // 执行操作 long finalLength doc.GetText().Length; Console.WriteLine($Content length change: {finalLength - initialLength} chars);11.3 使用文档遍历验证foreach (Bookmark bookmark in doc.Range.Bookmarks) { Console.WriteLine($Remaining bookmark: {bookmark.Name}); }12. 高级主题自定义书签删除策略对于复杂需求可以实现自定义的书签删除策略interface IBookmarkRemovalStrategy { bool ShouldRemove(Bookmark bookmark); } class ExpiredBookmarkStrategy : IBookmarkRemovalStrategy { public bool ShouldRemove(Bookmark bookmark) { return bookmark.Name.EndsWith(_EXPIRED) || bookmark.Text.Contains([OBSOLETE]); } } void RemoveBookmarksWithStrategy(Document doc, IBookmarkRemovalStrategy strategy) { foreach (Bookmark bookmark in doc.Range.Bookmarks.ToArray()) { if (strategy.ShouldRemove(bookmark)) { bookmark.Remove(); } } }这种模式使得书签删除逻辑可以灵活扩展适应各种业务规则。13. 与其他Aspose组件的协同工作在实际项目中常常需要结合其他Aspose组件13.1 与Aspose.PDF的配合将处理后的Word转换为PDF时书签可以转换为PDF书签Document doc new Document(input.docx); // 书签处理... // 转换为PDF Aspose.Pdf.Document pdfDoc new Aspose.Pdf.Document(); using (MemoryStream stream new MemoryStream()) { doc.Save(stream, SaveFormat.Pdf); pdfDoc.Bind(stream); } // PDF特定处理...13.2 与Aspose.Cells的数据集成从Excel读取数据填充到Word书签然后删除标记// 从Excel获取数据 Aspose.Cells.Workbook excel new Aspose.Cells.Workbook(data.xlsx); string customerName excel.Worksheets[0].Cells[A1].StringValue; // 填充Word书签 Document doc new Document(template.docx); doc.Range.Bookmarks[customer].Text customerName; // 删除模板标记 doc.Range.Bookmarks[template_marker].Remove();14. 安全注意事项与权限管理处理文档自动化时需要考虑的安全因素输入验证始终验证输入文档的可靠性try { Document doc new Document(input.docx); } catch (Exception ex) { Console.WriteLine($Invalid document: {ex.Message}); return; }权限检查确保有权限修改目标文档FileInfo fileInfo new FileInfo(output.docx); if (fileInfo.Exists fileInfo.IsReadOnly) { Console.WriteLine(No write permission for output file); return; }备份策略重要文档操作前创建备份string backupPath $backup_{DateTime.Now:yyyyMMddHHmmss}.docx; File.Copy(input.docx, backupPath);15. 实际项目中的经验分享在实际企业应用中有几个值得分享的经验书签命名规范建立统一的书签命名规则如bm_section1_title便于管理和批量操作。删除前的状态保存在执行删除前可以先将书签信息导出为日志var bookmarkReport doc.Range.Bookmarks .CastBookmark() .Select(b ${b.Name}|{b.Text.Length}|{b.FirstParagraph.GetText()}) .ToList(); File.WriteAllLines(bookmark_report.csv, bookmarkReport);处理损坏的书签有时会遇到只有开始标记没有结束标记的损坏书签foreach (Bookmark bookmark in doc.Range.Bookmarks.ToArray()) { if (bookmark.BookmarkEnd null) { Console.WriteLine($Broken bookmark: {bookmark.Name}); // 特殊处理... } }性能关键场景对于需要处理数千个文档的批处理作业考虑使用DocumentBuilder进行底层操作或者并行处理多个文档。单元测试策略为书签删除逻辑编写单元测试[TestMethod] public void TestBookmarkRemoval() { Document doc new Document(); DocumentBuilder builder new DocumentBuilder(doc); // 添加测试书签 builder.StartBookmark(test); builder.Write(Sample content); builder.EndBookmark(test); // 执行删除 doc.Range.Bookmarks[test].Remove(); Assert.AreEqual(0, doc.Range.Bookmarks.Count); }16. 与其他文档格式的兼容性考虑虽然本文主要讨论Word文档但类似概念也适用于其他格式16.1 处理PDF书签使用Aspose.PDF删除书签的对比代码Aspose.Pdf.Document pdfDoc new Aspose.Pdf.Document(input.pdf); pdfDoc.Outlines.Delete();16.2 Excel名称管理器Excel中的名称(Names)类似于书签的概念Aspose.Cells.Workbook workbook new Aspose.Cells.Workbook(input.xlsx); workbook.Worksheets.Names.RemoveAt(MyRange);理解这些相似性可以帮助在不同文档处理场景中快速切换思路。17. 错误处理与恢复策略健壮的生产代码需要完善的错误处理17.1 处理文档损坏情况try { LoadOptions options new LoadOptions { ContinueOnError true }; Document doc new Document(corrupted.docx, options); // 尝试恢复操作... } catch (Exception ex) { Console.WriteLine($Critical error: {ex.Message}); // 通知管理员或记录到监控系统 }17.2 实现操作回滚对于关键操作可以实现简单的回滚机制MemoryStream backupStream new MemoryStream(); doc.Save(backupStream, SaveFormat.Docx); try { // 尝试危险操作 DangerousBookmarkRemoval(doc); } catch { // 出错时回滚 backupStream.Position 0; doc new Document(backupStream); }18. 文档自动化中的设计模式应用对于复杂的文档处理流程可以考虑应用设计模式18.1 责任链模式处理书签abstract class BookmarkHandler { protected BookmarkHandler successor; public void SetSuccessor(BookmarkHandler successor) { this.successor successor; } public abstract void HandleRequest(Bookmark bookmark); } class ExpiredBookmarkHandler : BookmarkHandler { public override void HandleRequest(Bookmark bookmark) { if (bookmark.Name.EndsWith(_EXPIRED)) { bookmark.Remove(); } else if (successor ! null) { successor.HandleRequest(bookmark); } } }18.2 工厂模式创建处理策略class BookmarkRemovalFactory { public static IBookmarkRemovalStrategy CreateStrategy(string scenario) { switch (scenario) { case cleanup: return new CleanupStrategy(); case migration: return new MigrationStrategy(); default: throw new ArgumentException(Unknown scenario); } } }这些模式可以使代码更易于维护和扩展。19. 性能监控与优化对于高频执行的文档处理操作性能监控很重要19.1 基准测试代码Stopwatch stopwatch Stopwatch.StartNew(); // 执行书签删除操作 RemoveBookmarks(doc); stopwatch.Stop(); Console.WriteLine($Operation took {stopwatch.ElapsedMilliseconds} ms); // 记录到性能监控系统 LogPerformanceMetric(BookmarkRemoval, stopwatch.Elapsed);19.2 内存使用分析long memoryBefore GC.GetTotalMemory(true); // 执行操作... long memoryAfter GC.GetTotalMemory(true); Console.WriteLine($Memory delta: {(memoryAfter - memoryBefore) / 1024} KB);20. 企业级部署考虑将书签处理功能集成到企业系统中时配置化将书签命名模式、处理规则等外部化到配置文件中{ BookmarkRemovalRules: { Patterns: [tmp_*, *_old], RetentionDays: 30 } }依赖注入使用DI容器管理Aspose.Words相关服务services.AddScopedIDocumentProcessor, AsposeDocumentProcessor();分布式处理对于大量文档考虑使用消息队列分发处理任务// 生产者 queueClient.SendMessage(new CloudMessage(process-document, docId)); // 消费者 var processor serviceProvider.GetServiceIDocumentProcessor(); processor.RemoveBookmarks(docId);健康检查添加对Aspose许可证状态的检查app.MapGet(/health, () Aspose.Words.License.IsLicensed ? Healthy : Unlicensed);

相关新闻

华为OD机试高频题:平面点集构成正方形数量的O(n²)哈希解法

华为OD机试高频题:平面点集构成正方形数量的O(n²)哈希解法

1. 项目概述与问题核心最近在帮几个准备华为OD机试的朋友做模拟练习,发现“构成正方形的数量”这道题出现的频率相当高,而且在不同语言(C、Java、JavaScript、Python)的考察中都有涉及。这其实是一道经典的几何组合数学问题&#…

2026/8/4 5:50:21 阅读更多 →
5款常用接龙小程序对比评测:教培机构选哪个约课最防撞单?谁才是当今效率王?

5款常用接龙小程序对比评测:教培机构选哪个约课最防撞单?谁才是当今效率王?

对于各大教培机构、艺术工作室、健身私教或早教中心来说,“课程预约”几乎是每周最头疼的运营难题。很多机构习惯在微信群里让家长或学员用文字接龙约课,结果经常出现:两个人同时发消息抢同一个时段、热门名额“撞单”争执不下、老师在微信群…

2026/8/4 5:50:21 阅读更多 →
2026年度南京智能体开发定制公司有哪些?本地企业服务商选型测评参考

2026年度南京智能体开发定制公司有哪些?本地企业服务商选型测评参考

一、企业开发定制专属 AI 智能体,为什么优先对比南京本地开发公司标准化通用 AI 工具仅能完成基础问答、文案生成,企业智能体开发定制可深度贴合企业独有业务流程、内部文档知识库、ERP/MES/CRM 存量业务系统,自主搭建营销、客服、生产运维、…

2026/8/4 5:50:21 阅读更多 →

最新新闻

从被动接受到主动管理:如何将非自愿协作转化为效率与关系资产

从被动接受到主动管理:如何将非自愿协作转化为效率与关系资产

1. 一次“不情愿”的协作:从被动接受到主动破局“我不情愿的用了20多分钟,满足了学姐的要求,可是...” 这个标题,是不是瞬间让你想起了学生时代、职场初期,或者任何一段需要与“前辈”或“上级”协作的时光&#xff1f…

2026/8/4 6:35:39 阅读更多 →
Python日志系统:从基础到高级实践

Python日志系统:从基础到高级实践

1. 为什么我们需要专业的日志体系刚入行那会儿,我调试代码全靠print大法。直到有次线上服务半夜崩溃,面对茫茫多的print输出,花了整整6小时才定位到一个简单的空指针异常。那次教训让我明白:没有结构化的日志,排错就像…

2026/8/4 6:35:39 阅读更多 →
C语言实现高效字母异位词查找算法

C语言实现高效字母异位词查找算法

1. 项目概述:字符串中的字母异位词查找在C语言字符串处理中,字母异位词(Anagram)检测是个经典问题。所谓字母异位词,指的是由相同字母重新排列形成的不同单词或短语,比如"listen"和"silent&…

2026/8/4 6:35:39 阅读更多 →
Flutter arcade框架鸿蒙适配实战与性能优化

Flutter arcade框架鸿蒙适配实战与性能优化

1. 项目背景与核心价值在跨平台开发领域,Flutter因其高效的渲染性能和统一的代码库优势,已成为移动端开发的主流选择之一。而arcade作为Flutter生态中的高性能Web框架,其独特之处在于将服务端逻辑与客户端渲染深度整合,实现了轻量…

2026/8/4 6:35:39 阅读更多 →
3步搞定智慧教育平台电子课本下载:教师必备的高效备课神器

3步搞定智慧教育平台电子课本下载:教师必备的高效备课神器

3步搞定智慧教育平台电子课本下载:教师必备的高效备课神器 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容。 项目…

2026/8/4 6:35:39 阅读更多 →
如何让AI在对比评测中主动推荐你的品牌:一份内容资产清单

如何让AI在对比评测中主动推荐你的品牌:一份内容资产清单

当客户向AI提问“A公司和B公司哪个好”时,AI的答案往往决定了客户的初步印象。但AI如何形成这个答案?它依赖的是可检索、可验证的结构化内容。本文迪普智见给出一份可操作的内容资产清单,帮助品牌提高在AI对比类回答中被引用的概率。为什么AI…

2026/8/4 6:34:38 阅读更多 →

日新闻

AI Agent白手起家26: 使用标准事件驱动大模型实践

AI Agent白手起家26: 使用标准事件驱动大模型实践

纲要 练习目标:掌握大模型标准事件的调用回顾 LangChain 中的核心标准事件 invokestreambatchastream_eventswith_structured_output 环境准备实战代码:多种事件调用对比 同步调用与流式输出批量处理异步事件流监听结构化输出 运行说明与预期结果总结与扩…

2026/8/4 0:00:40 阅读更多 →
dealsea是什么?跨境卖家必知的美国deal站入门指南

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话,第一次听说美国这个老牌折扣网站的跨境卖家,十个有八个会问同一个问题:这个平台到底是干嘛的?我见过一个做家居出口的朋友,他在亚马逊上月销二十万美金,却从来没用过它。我给他看了首页——一屏一屏…

2026/8/4 0:01:40 阅读更多 →
清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

通讯作者:邓兵、刘建国通讯单位:清华大学DOI:https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素(REEs)是清洁能源技术与电子器件不可或缺的核心原料,然而传统提取方式依赖能耗高、排放大的采矿与强…

2026/8/4 0:01:40 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/3 4:58:13 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/3 1:53:31 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/4 5:26:40 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/3 13:07:03 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/3 5:19:38 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/3 8:27:36 阅读更多 →