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

时间:2015-06-22 07:43:25

标签: javascript json replace

我正在写一些Javascript:

  1. 读入并解析JSON文件
  2. 读入HTML文件(作为模板文件创建)
  3. 使用JSON文件中的元素替换HTML文件中的元素。
  4. 它只替换第一个元素obj.verb。有人可以帮我弄清楚我在哪里得到语法或整体方法错了吗?请参阅下面的代码以及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}
                                    ]
                                }
                           ]
    

    上面引用的示例JSON文件。

    <ListView>
        <dd:MyDragDrop.DropBorders>
            <Border Style="{StaticResource brdOneStyle}"/>
            <Border Style="{StaticResource brdTwoStyle}"/>
            <Border Style="{StaticResource brdThreeStyle}"/>
        </dd:MyDragDrop.DropBorders>
    </ListView>
    

    }

2 个答案:

答案 0 :(得分:0)

我想它应该是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);

答案 1 :(得分:0)

obj.roles[0]是一个对象{"name":"with whom"}。你不能用对象替换字符串。 你需要参考财产&#34; name&#34;在对象中

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);