2012-04-30 14 views
1

皆様におめでとう!HTMLファイルの特別なプレースホルダをQtで置き換えよう

私は、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> 

私は具体的なデータによってタイプ(%のなめらかさ%)の特殊なマーカーを交換する方法を探しています。プロジェクトはQtの下で開発されているので、Qtのメソッドがそれを行うことができるのだろうかと思います。 ありがとう!

+0

あなたは '%% 'フォーマットに束縛されていますか?ネイティブな方法は '&;'という名前のエンティティなので。 – MSalters

答えて

0

you can not use regexpsまでは、xmlpatternsライブラリでサポートされている XSLTを使用することをおすすめします。

EDIT

誰かが彼はまだこのような場合には正規表現でHTMLを解析できると考えたように、私はいくつかの例を与えるだろう、正規表現は失敗表示されます:

  1. あなたは(属性にマーカーを持っていますそしてあなたはそれを交換する必要はありません)

    <p class="%first name"> 
    
  2. 誰かを注入するdesideます:

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

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

+0

タグを一致させる必要があるのはなぜですか?彼はXPathのような機能は必要ありません。 – MSalters

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); 
関連する問題