Node.js中如何根据用户输入的XML标签名提取标签内内容
Node.js 实现XML标签内容查询功能
需求说明
接收用户输入的XML标签名,在指定XML文档中查找所有对应标签,遍历并完整展示每个标签内的内容(包含子标签)。例如输入unit时,输出所有<unit>标签的完整XML内容。
示例XML
<root> <unit> <name>Unit 1</name> <value>100</value> </unit> <unit> <name>Unit 2</name> <value>200</value> </unit> <section> <title>Section A</title> </section> </root>
修正后的实现代码
首先安装依赖库:
npm install xmldom xmlserializer
完整代码:
const { DOMParser } = require('xmldom'); const xmlserializer = require('xmlserializer'); const readline = require('readline'); // 待查询的XML内容 const xmlContent = ` <root> <unit> <name>Unit 1</name> <value>100</value> </unit> <unit> <name>Unit 2</name> <value>200</value> </unit> <section> <title>Section A</title> </section> </root> `; // 创建命令行交互实例 const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); rl.question('请输入要查询的XML标签名:', (targetTag) => { // 解析XML为DOM文档对象 const parser = new DOMParser(); const xmlDoc = parser.parseFromString(xmlContent, 'text/xml'); // 查找所有匹配的标签元素 const targetElements = xmlDoc.getElementsByTagName(targetTag); if (targetElements.length === 0) { console.log(`未找到<${targetTag}>标签`); rl.close(); return; } console.log(`找到${targetElements.length}个<${targetTag}>标签:`); // 遍历元素,序列化并输出完整XML内容 for (let i = 0; i < targetElements.length; i++) { const elementXml = xmlserializer.serializeToString(targetElements[i]); console.log(elementXml); } rl.close(); });
测试效果
- 输入
unit时输出:
找到2个<unit>标签: <unit> <name>Unit 1</name> <value>100</value> </unit> <unit> <name>Unit 2</name> <value>200</value> </unit>
- 输入
section时输出:
找到1个<section>标签: <section> <title>Section A</title> </section>
- 输入不存在的标签(如
test)时输出:
未找到<test>标签
关键说明
xmldom负责将XML字符串解析为标准DOM结构,方便进行标签查询xmlserializer负责将DOM元素重新序列化为XML字符串,保证输出格式与原XML一致- 增加了标签不存在的判断逻辑,避免无意义输出
内容的提问来源于stack exchange,提问作者allen walker
相关产品推荐
相关产品推荐

