如何修改JavaScript代码移除XML首尾各两行(node1与node2标签)
问题
现有一段XML内容,需要移除首尾各两行(即<node1>和<node2>相关的首尾标签)。当前使用的JavaScript代码仅能移除首尾各一行,请问如何修改代码实现需求?
示例XML:
<node1> <node2> <context> <FirstName>barb</FirstName> <LastName>tor</LastName> </context> </node2> </node1>
当前JavaScript代码:
var xml ='<node1><node2><context><FirstName>David</FirstName><LastName>Test</LastName></context></node2></node1>'; const innerStart = xml.indexOf(">") + 1; const innerEnd = xml.lastIndexOf("<"); const inner = xml.slice(innerStart, innerEnd); console.log(inner)
解决方案
方法1:改进字符串截取(适用于压缩格式的XML)
原代码仅处理了单层首尾标签,要移除两层的话,需要定位到第二层标签的边界:
var xml ='<node1><node2><context><FirstName>David</FirstName><LastName>Test</LastName></context></node2></node1>'; // 找到第二个>的位置:先找第一个>,再从下一位开始找第二个> const firstClose = xml.indexOf(">") + 1; const innerStart = xml.indexOf(">", firstClose) + 1; // 找到倒数第二个<的位置:先找最后一个<,再从开头到该位置前找倒数第二个< const lastOpen = xml.lastIndexOf("<"); const innerEnd = xml.lastIndexOf("<", lastOpen - 1); const inner = xml.slice(innerStart, innerEnd); console.log(inner); // 输出:<context><FirstName>David</FirstName><LastName>Test</LastName></context>
方法2:DOM解析(更稳定,推荐)
字符串操作XML容易在标签带属性、格式变化时出错,用DOM解析能更可靠地提取目标内容:
var xml ='<node1><node2><context><FirstName>David</FirstName><LastName>Test</LastName></context></node2></node1>'; // 创建解析器并解析XML const parser = new DOMParser(); const xmlDoc = parser.parseFromString(xml, "text/xml"); // 直接获取context节点的完整内容 const contextNode = xmlDoc.querySelector("context"); console.log(contextNode.outerHTML); // 输出:<context><FirstName>David</FirstName><LastName>Test</LastName></context>
如果是Node.js环境,需安装xmldom包替代浏览器内置的DOMParser:
- 安装依赖:
npm install xmldom - 代码示例:
const { DOMParser } = require('xmldom'); var xml ='<node1><node2><context><FirstName>David</FirstName><LastName>Test</LastName></context></node2></node1>'; const parser = new DOMParser(); const xmlDoc = parser.parseFromString(xml, "text/xml"); const contextNode = xmlDoc.getElementsByTagName("context")[0]; console.log(contextNode.toString());
内容的提问来源于stack exchange,提问作者David Garcia
相关产品推荐
相关产品推荐

