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

regexpsが使えないのであれば、 xmlpatternsライブラリでサポートされている XSLT を使うことをお勧めします。

編集

この場合、正規表現で html を解析できると誰かが考えているので、正規表現が失敗することを示すいくつかの例を示します。

  1. 属性にマーカーがあります(そしてそれを置き換えたくない)

    <p class="%first name">
    
  2. 誰かが注入したいと思うでしょう:

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

    XSLT 置換後は自動的にエスケープされます。

于 2012-04-30T21:03:27.527 に答える