使用javascript将html字符串解析为json
我的任务是将html字符串转换为json,问题是: 编写至少包含一个调用的主函数/方法的代码get_方案 那个 接收包含简单HTML标记的字符串,如<代码>, , , 代码> 具有属性。任何 包含方案前缀使用javascript将html字符串解析为json,javascript,html,node.js,Javascript,Html,Node.js,我的任务是将html字符串转换为json,问题是: 编写至少包含一个调用的主函数/方法的代码get_方案 那个 接收包含简单HTML标记的字符串,如, , , 具有属性。任何 包含方案前缀sc- 是用scheme标记的。函数/方法将返回一个 输入的树结构,在一个标记中有多个方案,并且可能有一个值。这个 函数还必须返回结构类似于树的json字符串。结果的第一个元素 节点包含一个数组,它是从输入参数解析的方案列表。其余元素 是节点的分支。假设HTML标记始终具有正确的打
sc-
是用scheme标记的。函数/方法将返回一个
输入的树结构,在一个标记中有多个方案,并且可能有一个值。这个
函数还必须返回结构类似于树的json字符串。结果的第一个元素
节点包含一个数组,它是从输入参数解析的方案列表。其余元素
是节点的分支。假设HTML标记始终具有正确的打开-关闭标记,并且具有
没有分支
例如:
输入html字符串:<代码>“你好,世界日”
输出:[{“道具”:“”“别名”:““类型”:“组织”}、[{“姓名”:“爱丽丝”}、[{“地点”:“仙境”}]、{“时间”:“夜晚”}]]]
这是我的方法:
const jsdom = require('jsdom');
function get_attr(dom, temp_result=[]) {
for (let i = 0; i < dom.length; i++) {
obj = {}
const child = dom[i].children
Array.prototype.slice.call(dom[i].attributes).forEach(function(item) {
if (item.name.startsWith('sc-')) {
const name = item.name.replace('sc-','')
obj[name] = item.value == null ? "" : item.value
}
});
if (child.length) {
temp_result.push(obj)
temp = get_attr(child)
if (child.length>1) {
for(let j=0; j<temp.length; j++) {
// console.log(temp[j])
temp_result.push([temp[j]])
}
} else {
temp_result.push(temp)
}
}
else {
temp_result.push(obj)
}
}
return temp_result
}
function get_scheme(tag) {
const dom = new jsdom.JSDOM(tag);
const document = dom.window.document;
const child = document.body.children;
scheme = get_attr(child)
return scheme
}
应该是:
[{"prop":"","alias":"","type":"Organization"},[{"name":"Alice"},[[{"time":"night"},[{"to":"world"}]],[{"place":"Wonderland"}]]]
有人能帮我吗
[{"prop":"","alias":"","type":"Organization"},[{"name":"Alice"},[{"time":"night"}],[[{"to":"world"}]],[{"place":"Wonderland"}]]]
[{"prop":"","alias":"","type":"Organization"},[{"name":"Alice"},[[{"time":"night"},[{"to":"world"}]],[{"place":"Wonderland"}]]]