1

祝大家有美好的一天!

我有这种 HTML 文件:

  <tr>
    <td>
      <p>First name: </p>
    </td>
    <td>
      <p> %first_name% </p>
    </td>
  </tr>
  <tr>
    <td>
      <p>Last name: </p>
    </td>
    <td>
      <p"> %last_name% </p>
    </td>
  </tr>

我正在寻找一种用具体数据替换类型(%smth%) 的特殊标记的方法。项目正在Qt下开发,所以我想知道一些Qt的方法是否可以做到。谢谢!

4

2 回答 2

1

最简单的解决方案可能是使用QString & QString::replace ( const QString & before, const QString & after, Qt::CaseSensitivity cs = Qt::CaseSensitive ),它将之前的字符串替换为之后的字符串并返回一个引用到这个字符串。

将 html 文件的内容放入 QString 中,然后调用 QString::replace() 以用具体数据替换特殊标记。例如:

QString firstName("John");
html.replace("%first_name%", firstName);
于 2012-05-01T05:58:01.407 回答
0

至于不能使用正则表达式,我建议使用xmlpatterns库支持的 XSLT。

编辑

由于有人认为在这种情况下他仍然可以用正则表达式解析 html,我将给出一些示例,这将显示正则表达式失败:

  1. 您在属性中有标记(并且您不希望它被替换)

    <p class="%first name">
    
  2. 有人会想注入:

    map: %firstname -> <srcipt language ="javascript">....</script>
    

    XSLT 替换后会自动转义。

于 2012-04-30T21:03:27.527 回答