Javascript 用JSON对象替换HTML文件中的元素

Javascript 用JSON对象替换HTML文件中的元素,javascript,json,replace,Javascript,Json,Replace,我正在编写一些Javascript来: 读入并解析JSON文件 读入HTML文件(创建为模板文件) 将HTML文件中的元素替换为JSON文件中的元素 它只是替换第一个元素obj.verb。有人能帮我找出语法或整体方法哪里错了吗?请参阅下面的代码和JSON文件的示例 fs.readFile("./tasks/example.json",'utf8', function(err, jsonObjectForHIT){ // parse json file and assign to variabl

我正在编写一些Javascript来:

  • 读入并解析JSON文件
  • 读入HTML文件(创建为模板文件)
  • 将HTML文件中的元素替换为JSON文件中的元素
  • 它只是替换第一个元素obj.verb。有人能帮我找出语法或整体方法哪里错了吗?请参阅下面的代码和JSON文件的示例

    fs.readFile("./tasks/example.json",'utf8', function(err, jsonObjectForHIT){
    
    // parse json file and assign to variable obj
    var obj = JSON.parse(jsonObjectForHIT)
    
    // read in template file 
    fs.readFile("./tasks/StageOneQuestionTemplate1.html", function(err, addedXML){
    // replace value from template with value from json object and assign to variable finalXML
    var finalXML = String(addedXML).replace(/VerbGoesHere/g,obj.verb);
    var finalXML = String(addedXML).replace(/RoleOne/g,obj.roles[0]);
    var finalXML = String(addedXML).replace(/RoleTwo/g,obj.roles[1]);
    var finalXML = String(addedXML).replace("RoleThree",obj.roles[2])
    }
    
    上面引用的示例JSON文件。

    {
    "verb":"tenir",
    "roles":[
                {"name":"with whom"},
                {"name":"thing held"},
                {"name":"conductor"}
            ],
    "srcLanguageSentence":{ "text":"Burmah said it had n't held any discussions with SHV and that `` no deal of any nature is in contemplation .",
                            "verb":{"text":"held","sense":"HOLD, conduct","beginOffset":24,"endOffset":28},
                            "roles":[
                                        {"name":"with whom","text":"with SHV","beginOffset":45,"endOffset":53},
                                        {"name":"thing held","text":"any discussions","beginOffset":29,"endOffset":44},
                                        {"name":"conductor","text":"it","beginOffset":13,"endOffset":15}
                                    ]
                           },
    "tgtLanguageSentences":[
                                { 
                                    "text":"Je tiens �galement � mentionner la r�cente Conf�rence , tenue au Canada , sur les enfants touch�s par la guerre .",
                                    "verb":{"text":"tenue","beginOffset":57,"endOffset":62},
                                    "roles":[
                                        {"name":"thing held","text":"la r�cente Conf�rence , , sur les enfants touch�s par la guerre","beginOffset":33,"endOffset":112},
                                        {"name":"location information","text":"au Canada","beginOffset":63,"endOffset":72}
                                    ]
                                }
                           ]
    

    }

    我想应该是
    obj.roles[].name
    而不是
    obj.roles[]

    var finalXML = String(addedXML).replace(/RoleOne/g,obj.roles[0].name);
    var finalXML = String(addedXML).replace(/RoleTwo/g,obj.roles[1].name);
    var finalXML = String(addedXML).replace("RoleThree",obj.roles[2].name);
    

    我想应该是
    obj.roles[].name
    而不是
    obj.roles[]

    var finalXML = String(addedXML).replace(/RoleOne/g,obj.roles[0].name);
    var finalXML = String(addedXML).replace(/RoleTwo/g,obj.roles[1].name);
    var finalXML = String(addedXML).replace("RoleThree",obj.roles[2].name);
    

    obj.roles[0]
    是一个对象
    {“name”:“who”}
    。不能用对象替换字符串。 您需要在对象中引用属性“name”

    obj.roles[0].name
    
    另一个问题是,
    var finalXML
    每行获取一个新值。 您需要向变量添加一个新值,而不是重新输入它

     var finalXML = String(addedXML).replace(/VerbGoesHere/g,obj.verb)
     .replace(/RoleOne/g,obj.roles[0].name)
     .replace(/RoleTwo/g,obj.roles[1].name)
     .replace("RoleThree",obj.roles[2].name);
    

    obj.roles[0]
    是一个对象
    {“name”:“who”}
    。不能用对象替换字符串。 您需要在对象中引用属性“name”

    obj.roles[0].name
    
    另一个问题是,
    var finalXML
    每行获取一个新值。 您需要向变量添加一个新值,而不是重新输入它

     var finalXML = String(addedXML).replace(/VerbGoesHere/g,obj.verb)
     .replace(/RoleOne/g,obj.roles[0].name)
     .replace(/RoleTwo/g,obj.roles[1].name)
     .replace("RoleThree",obj.roles[2].name);
    

    更改该语法后,它只替换最后一行“var finalXML=String(addedXML).replace(“RoleThree”,obj.roles[2])。如果我把那一行注释掉,它只会替换它前面的那一行。我怎样才能让它替换所有内容(动词、角色等),而不仅仅是最后一行?你能做一把小提琴吗?我也在尝试读取JSON文件中的不同对象。例如,“var finalXML=String(addedXML).replace(/srclanguagestencetext/g,obj.srclanguagestence[0].text)”尝试从JSON文件中的“srclanguagestence”和“tgtlanguagestensions”读取文本、动词和角色,并将它们放入html模板中。错误为“无法读取未定义的属性‘text’”。有人能帮我用语法来完成这项工作吗?在更改语法后,它只替换最后一行“var finalXML=String(addedXML).replace(“RoleThree”,obj.roles[2])”。如果我把那一行注释掉,它只会替换它前面的那一行。我怎样才能让它替换所有内容(动词、角色等),而不仅仅是最后一行?你能做一把小提琴吗?我也在尝试读取JSON文件中的不同对象。例如,“var finalXML=String(addedXML).replace(/srclanguagestencetext/g,obj.srclanguagestence[0].text)”尝试从JSON文件中的“srclanguagestence”和“tgtlanguagestensions”读取文本、动词和角色,并将它们放入html模板中。错误为“无法读取未定义的属性‘text’”。有人能帮我用语法来完成这项工作吗?在更改语法后,它只替换最后一行“var finalXML=String(addedXML).replace(“RoleThree”,obj.roles[2])”。如果我把那一行注释掉,它只会替换它前面的那一行。如何让它替换所有内容(动词、角色等),而不仅仅是最后一行?更改语法后,它只替换最后一行“var finalXML=String(addedXML).replace(“RoleThree”,obj.roles[2])。如果我把那一行注释掉,它只会替换它前面的那一行。如何让它替换所有内容(动词、角色等),而不仅仅是最后一行?我也在尝试读取JSON文件中的不同对象。例如,“var finalXML=String(addedXML).replace(/srclanguagestencetext/g,obj.srclanguagestence[0].text)”尝试从JSON文件中的“srclanguagestence”和“tgtlanguagestensions”读取文本、动词和角色,并将它们放入html模板中。错误为“无法读取未定义的属性‘text’”。有人能帮我解释一下语法吗?在
    obj.srclanguageSequence
    中,“text”之前不需要[0],因为它是一个对象,而不是数组。只有在数组中的角色中才需要它。正确的代码也是如此:
    var finalXML=String(addedXML)‌​ext)
    我也在尝试读取JSON文件中的不同对象。例如,“var finalXML=String(addedXML).replace(/srclanguagestencetext/g,obj.srclanguagestence[0].text)”尝试从JSON文件中的“srclanguagestence”和“tgtlanguagestensions”读取文本、动词和角色,并将它们放入html模板中。错误为“无法读取未定义的属性‘text’”。有人能帮我解释一下语法吗?在
    obj.srclanguageSequence
    中,“text”之前不需要[0],因为它是一个对象,而不是数组。只有在数组中的角色中才需要它。正确的代码也是如此:
    var finalXML=String(addedXML)‌​ext)