C++ プログラムで xerces 3 を使用しています。サックス解析で開始タグと終了タグの間のテキストを抽出する方法を教えてください。たとえば、次のものがあるとします。
<?xml version="1.0"?>
<catalog>
<book id="123">
<author>Introduction to algorithm </author>
</book>
</catalog>
このテキストへのアクセス方法: 「アルゴリズムの紹介」
以下を使用できるはずです。
void HandlerBase::characters ( const XMLCh *const chars,
const XMLSize_t length
)
これは何度も呼び出される可能性があることに注意してください。
私の記憶が正しければ、 から継承する独自のハンドラーを作成しますHandlerBase
。startElement()
で呼び出され<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
);
違いを見つけますか?独自のバージョンの署名をヘッダー ファイルと一致させると、機能します。
メソッドで override キーワードを使用します。これはあなたを少し助けるかもしれません