将WordVBA模型中的枚举值输出到Xml文件中

news/2025/1/12 2:43:58/
const xpath = require('xpath');
const {DOMParser} = require('xmldom');
const axios = require('axios');
const fs = require('fs');// 定义多个API接口URL和请求参数
const apiList = [];
function getEnumList(){return axios.get("https://learn.microsoft.com/zh-cn/office/vba/api/word(enumerations)").then(response => {// 处理获取到的数据let data = response.data;let doc = new DOMParser ().parseFromString(data);let nodelistx = xpath.select('//main/div[3]/ul[1]/li', doc);nodelistx.forEach(itemx=>{let node =  itemx.textContent;let item = node.toLowerCase();let apiObj = {};apiObj.url = 'https://learn.microsoft.com/zh-cn/office/vba/api/word.'+item;apiObj.params ={};apiObj.EnumField=node;apiList.push(apiObj);});}).catch(error => {console.error(error);});
}
// 定义按顺序执行Ajax请求的函数
function fetchApiList(apiList) {const promises = apiList.map(api => {return axios.get(api.url, {params: api.params,headers: {}}).then(response => {// 处理获取到的数据let data = response.data;let doc = new DOMParser ().parseFromString(data);let enumEn = xpath.select('//main/div[3]/h1', doc).at(0);let enumCh = xpath.select('//main/div[3]/p[1]', doc).at(0);let enumStr = '<!--'+enumEn.textContent+'===='+enumCh.textContent+'-->';enumStr+='<'+api.EnumField+'>';   // 使用XPath查找所有a标签的href属性值let nodelist = xpath.select('//table/tbody/tr', doc);nodelist.forEach(node=>{enumStr+='<Item name="'+node.childNodes[1].textContent+'" '+'value="'+node.childNodes[3].textContent+'" '+'description="'+ node.childNodes[5].textContent+'"/>';});enumStr+='</'+api.EnumField+'>';return enumStr;}).catch(error => {console.error(error);});});return Promise.all(promises);
}getEnumList().then(()=>{// 按顺序循环获取API接口的数据fetchApiList(apiList).then((nodelist) => {let enumStr = '<?xml version="1.0" encoding="UTF-8"?><WordEnum>';nodelist.forEach(node=>{enumStr+=node;});enumStr+="</WordEnum>"const filename = 'D:\\tirklee\\QTWork\\InterfacePlatform\\config\\word\\WordEnum.xml';const writeStream = fs.createWriteStream(filename);writeStream.write(enumStr, () => {console.log('File written successfully.');});writeStream.end();}).catch(error => {console.error(error);});
});

http://www.ppmy.cn/news/498203.html

相关文章

自检、开机故障及主板厂商资料

什么是POST上电自检? POST上电自检:是微机接通电源后,系统进行的一个自我检查的例行程序。这个过程通常称为POST上电自检(Power On Self Test)。对系统的几乎所有的硬件进行检测。 POST是如何进行自检测的? 主板在接通电源后,系统首先由(Power On Self Test,上电自检)程…

PHP1c型GNAS,8盘位HP ML110 G9开箱测试,刷群晖改装20盘位

认识众多玩家高手/拆客/DIYer,查阅更多资源,一起学习技术知识 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 本帖最后由 qq98518 于 2020-3-24 09:20 编辑 DS918已经满而且用的并不是很顺,打算重新折腾,在求方案贴https://www.mydigit.cn/forum.php?mod=viewthrea…

C++指针对象和异常(12)

异常(exception) 为什么有异常 异常在C用于错误处理&#xff0c;C语言中一般使用返回值表示错误&#xff0c;C对错误处理进行了扩展&#xff0c;统一使用异常机制来处理程序中发生的错误。 C的异常处理包括两个部分 ----- 抛出异常和捕获异常&#xff0c;如果抛出的异常被捕…

【Mysql索引数据结构与算法】

脑图链接 一、索引 什么是索引 索引指的是数据库管理系统中一个排序的数据结构&#xff0c;以协助快速查询、更新数据库表中的数据。类似于书籍的目录&#xff0c;用于快速定位到所需内容、数据的页码位置。 优点&#xff1a;提高数据检索的效率&#xff0c;降低数据库的IO成…

一文搞懂String、StringBuffer、StringBuilder三者的对比以及扩容机制

String:不可变的字符序列&#xff1b;底层使用char[]存储StringBuffer:可变的字符序列&#xff1b;线程安全的&#xff0c;效率低&#xff1b;底层使用char[]存储StringBuilder:可变的字符序列&#xff1b;jdk5.0新增的&#xff0c;线程不安全的&#xff0c;效率高&#xff1b;…

CASAIM签约AMOOL TRADING COMPANY LTD,正式进军中东市场

随着3D打印、三维数字化及全自动化智能检测技术的不断进步和应用领域的扩大&#xff0c;全球市场在高速增长。CASAIM作为国内领先的3D打印、三维数字化及全自动化智能检测技术研发及制造商&#xff0c;一直致力于为全球智能制造企业提供高精度、高效率的智能制造及检测解决方案…

浏览器的渲染原理简介

看到这个标题大家一定会想到这篇神文《How Browsers Work》&#xff0c;这篇文章把浏览器的很多细节讲得很细&#xff0c;而且也被翻译成了中文。为什么我还想写一篇呢&#xff1f;因为两个原因&#xff0c; 1&#xff09;这篇文章太长了&#xff0c;阅读成本太大&#xff0c;不…

Nmap手册(转自http://www.nmap.com.cn/doc/manual.shtm)

译注 该Nmap参考指南中文版由Fei Yang fyang1024gmail.com和Lei Lililei_7216611.org 从英文版本翻译而来。 我们希望这将使全世界使用中文的人们更了解Nmap&#xff0c;但我们不能保证该译本和官方的 英文版本一样完整&#xff0c;也不能保证同步更新。 它可以在Creative Comm…