javascript - 在 Javascript 中使用 RegEx 解析嵌套的 HTML 自定义标签
问题描述
我正在使用 javascript 来操作存储在字符串中的 html 代码块。我正在使用的测试用例如下所示:
'<iteration array = "Team1.TeamMembers" > \n' +
'<li> {Name} </li> \n' +
'<iteration array = "Team2.TeamMembers" > \n' +
'<li> {Name} </li> \n' +
'<iteration array = "Team3.TeamMembers" > \n' +
'<li> {Name} </li> \n' +
'</iteration> \n' +
'<iteration array = "Team5.TeamMembers" > \n' +
'<li> {Name} </li> \n' +
'</iteration> \n' +
'</iteration> \n' +
'</iteration> \n' +
'<iteration array = "Team4.TeamMembers" > \n' +
'<li> {Name} </li> \n' +
'</iteration> \n' +
'</ul> \n';
数组和占位符将从作为输入给出的 json 文件中获取,但它们与我遇到的问题无关。我需要正确识别每个自定义 html 标记的嵌套级别,以便正确替换每个占位符和变量。我尝试了几种正则表达式解决方案,但它们最终都在某种程度上中断了。我知道我不应该使用正则表达式来解析 html,但这是我应该解决的任务。任何建议或替代方法将不胜感激。
解决方案
无需重新发明轮子 - DOMParser 文档中已经有一个解析器。它将代码解析为 HTML 页面,包括 head 等,但是您可以找到您想要的内容,并且可以直接访问现有属性,但也可能显式访问不存在的属性:
var src = '<iteration array = "Team1.TeamMembers" > \n' +
'<li> {Name} </li> \n' +
'<iteration array = "Team2.TeamMembers" > \n' +
'<li> {Name} </li> \n' +
'<iteration array = "Team3.TeamMembers" > \n' +
'<li> {Name} </li> \n' +
'</iteration> \n' +
'<iteration array = "Team5.TeamMembers" > \n' +
'<li> {Name} </li> \n' +
'</iteration> \n' +
'</iteration> \n' +
'</iteration> \n' +
'<iteration array = "Team4.TeamMembers" > \n' +
'<li> {Name} </li> \n' +
'</iteration> \n' +
'</ul> \n';
var parser = new DOMParser(), dom;
dom = parser.parseFromString(src, "text/html");
dom = dom.documentElement.lastElementChild.firstElementChild; // body -> iteration
console.log( dom.getAttribute("array") );
推荐阅读
- ajax - scalajs getCause on Ajax.post onFailure
- c# - C# MVC App 双重登录
- asp.net - 找不到类型或命名空间名称“Func<,>”(您是否缺少 using 指令或程序集引用?
- image - 如何实现快速 16 点 dct
- bash - 如何找出与 ALB 关联的 ECS 集群
- java - sun.net.www.protocol.http.HttpURLConnection.plainConnect() 中的 NPE
- java - 在 android/java 中传递信息的最佳实践
- c - C中的动态类型转换
- python - 合并来自多个字典和列表的数据
- eclipse - 在命令行中以调试模式在eclipse中运行程序