3

C++ プログラムで xerces 3 を使用しています。サックス解析で開始タグと終了タグの間のテキストを抽出する方法を教えてください。たとえば、次のものがあるとします。

<?xml version="1.0"?>
<catalog>
   <book id="123">
      <author>Introduction to algorithm </author>
    </book>
</catalog>

このテキストへのアクセス方法: 「アルゴリズムの紹介」

4

3 に答える 3

2

以下を使用できるはずです。

void HandlerBase::characters    (   const XMLCh *const      chars,
    const XMLSize_t     length   
)   

これは何度も呼び出される可能性があることに注意してください。

于 2012-11-22T15:35:22.610 に答える
1

私の記憶が正しければ、 から継承する独自のハンドラーを作成しますHandlerBasestartElement()で呼び出され<author>、次にendElement()で呼び出され</author>ます。間にあるすべてのテキストは に渡されるためcharacters()、 の中にいることを知る必要があります。<author></author>これを利用して、関数内の便利な場所に文字を保存しますcharacters(): http://xerces.apache.org/xerces-c/ apiDocs-3/classHandlerBase.html

私がこれを行ったとき (少し前に) だまされて、すべてが属性として渡されstartElement()、多くの手間が省けました。

編集:私は自分の例を作成しましたが、同じ問題がありました(質問でよく説明していませんでした。ところで、コードを提供していれば解決しやすかったでしょう)。ドキュメントを見てください(どのバージョンをチェックするかについては注意していませんでしたが、それでも注意してください):

virtual void characters (const XMLCh *const chars, const XMLSize_t length)

次に、実際のヘッダー ファイルを確認します。

virtual void characters
(
    const   XMLCh* const    chars
    , const unsigned int    length
);

違いを見つけますか?独自のバージョンの署名をヘッダー ファイルと一致させると、機能します。

于 2012-11-22T11:50:23.603 に答える
-1

メソッドで override キーワードを使用します。これはあなたを少し助けるかもしれません

于 2014-02-23T21:54:26.580 に答える