使用javascript将html字符串解析为json

使用javascript将html字符串解析为json,javascript,html,node.js,Javascript,Html,Node.js,我的任务是将html字符串转换为json,问题是: 编写至少包含一个调用的主函数/方法的代码​get_方案​ 那个 接收包含简单HTML标记的字符串,如​​, ​​ , ​​ , ​​ 具有属性。任何 包含方案前缀​sc-​ 是用scheme标记的。函数/方法将返回一个 输入的树结构,在一个标记中有多个方案,并且可能有一个值。这个 函数还必须返回结构类似于树的json字符串。结果的第一个元素 节点包含一个数组,它是从输入参数解析的方案列表。其余元素 是节点的分支。假设HTML标记始终具有正确的打

我的任务是将html字符串转换为json,问题是:

编写至少包含一个调用的主函数/方法的代码​get_方案​ 那个 接收包含简单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"}]]]