如何在sax解析中获取xml标记中的文本 我在C++程序中使用XeSeres 3。 我希望有人能指导我,如何在sax解析中提取开始标记和结束标记之间的文本。 例如,假设我们有: <?xml version="1.0"?> <catalog> <book id="123"> <author>Introduction to algorithm </author> </book> </catalog> 算法简介

如何在sax解析中获取xml标记中的文本 我在C++程序中使用XeSeres 3。 我希望有人能指导我,如何在sax解析中提取开始标记和结束标记之间的文本。 例如,假设我们有: <?xml version="1.0"?> <catalog> <book id="123"> <author>Introduction to algorithm </author> </book> </catalog> 算法简介,c++,sax,xerces,C++,Sax,Xerces,如何访问此文本:“算法简介”如果我没记错的话,您可以编写自己的处理程序,继承自HandlerBasestartElement()将在 当我这么做时(不久前),我只是作弊,将所有内容都作为属性,这些属性被传递到startElement(),从而节省了很多麻烦 编辑:我自己做了一个例子,也遇到了同样的问题(你在问题中没有很好地描述,顺便说一句,如果你能提供你的代码的话,这个问题会更容易解决)。 请看(注意,我没有仔细检查哪个版本,但仍然): 然后检查实际的头文件 virtual void chara

如何访问此文本:“算法简介”

如果我没记错的话,您可以编写自己的处理程序,继承自
HandlerBase
<代码>startElement()将在

当我这么做时(不久前),我只是作弊,将所有内容都作为属性,这些属性被传递到
startElement()
,从而节省了很多麻烦

编辑:我自己做了一个例子,也遇到了同样的问题(你在问题中没有很好地描述,顺便说一句,如果你能提供你的代码的话,这个问题会更容易解决)。 请看(注意,我没有仔细检查哪个版本,但仍然):

然后检查实际的头文件

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

找出区别了吗?使您自己的版本的签名与头文件匹配,它将起作用。

您应该能够使用:

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

请注意,这可能会被多次调用。

在方法中使用override关键字。这可能会帮你一点忙

向我们展示你到目前为止所拥有的(简单,不是一个庞大的程序),它可能是一些简单的添加。我的问题非常简单!我想阅读xml标记之间的文本如果它真的很简单,你可以自己做。。。我写了一些模糊的想法作为答案,但我不能给出任何没有起点的示例代码(即,我不会为您编写整个程序)。我认为最好由其他人回答我!有些人对xerces sax解析有一定的经验!是的,这是正确的,我们应该使用characters()方法!但是我的character方法永远不会在parsing中被调用。我应该注册一些关于它的信息吗?@paradisalprogrammer不知道您是否还在看这里,但我整理了我自己的示例,并找出了我的
characters()
函数没有被调用的原因。正在为我的答案添加更新。特别感谢BoBTFish!签名不好是主要的问题。问题不太清楚,但我想他试过了,但从来没有人打过电话。我也是这样,直到我意识到文档中的签名与标题中的签名不完全相同,所以我没有覆盖默认(空)实现。C++11现在包括override关键字,使用它可以避免没有覆盖正确函数的心痛。
void HandlerBase::characters    (   const XMLCh *const      chars,
    const XMLSize_t     length   
)