parser.h

来自「c语言编写的xml解析器可以方便的遍历插入删除节点等操作的」· C头文件 代码 · 共 108 行

H
108
字号
/* xml++.h * libxml++ and this file are copyright (C) 2000 by Ari Johnson, and * are covered by the GNU Lesser General Public License, which should be * included with libxml++ as the file COPYING. */#ifndef __LIBXMLPP_PARSER_H#define __LIBXMLPP_PARSER_H#ifdef WIN32 //TODO: Why do we do this? murrayc.#pragma warning (disable : 4786)#endif#include <libxml++/nodes/element.h>#include <libxml++/exceptions/validity_error.h>#include <libxml++/exceptions/internal_error.h>#ifdef WIN32 //TODO: Why do we do this? murrayc.#define vsnprintf _vsnprintf#endif#ifndef DOXYGEN_SHOULD_SKIP_THISextern "C" {  struct _xmlParserCtxt;};#endif //DOXYGEN_SHOULD_SKIP_THISnamespace xmlpp {/** XML parser. * */class Parser : NonCopyable{public:  Parser();  virtual ~Parser();  /** By default, the parser will not validate the XML file.   * @param val Whether the document should be validated.   */  virtual void set_validate(bool val = true);  /** See set_validate()   * @returns Whether the parser will validate the XML file.   */  virtual bool get_validate() const;  /** Set whether the parser will automatically substitute entity references with the text of the entities' definitions.   * For instance, this affects the text returned by ContentNode::get_content().   * By default, the parser will not substitute entities, so that you do not lose the entity reference information.   * @param val Whether entities will be substitued.   */  virtual void set_substitute_entities(bool val = true);  /** See set_substitute_entities().   * @returns Whether entities will be substituted during parsing.   */  virtual bool get_substitute_entities() const;    /** Parse an XML document from a file.   * @throw exception   * @param filename The path to the file.   */  virtual void parse_file(const std::string& filename) = 0;  /** Parse an XML document from a string.   * @throw exception   * @param contents The XML document as a string.   */  virtual void parse_memory(const std::string& contents) = 0;  /** Parse an XML document from a stream.   * @throw exception   * @param in The stream.   */  virtual void parse_stream(std::istream& in) = 0;protected:  virtual void initialize_context();  virtual void release_underlying();  virtual void on_validity_error(const std::string& message);  virtual void on_validity_warning(const std::string& message);  virtual void handleException(const exception& e);  virtual void check_for_exception();  virtual void check_for_validity_messages();    static void callback_validity_error(void* ctx, const char* msg, ...);  static void callback_validity_warning(void* ctx, const char* msg, ...);    _xmlParserCtxt* context_;  exception* exception_;  std::string validate_error_;  std::string validate_warning_; //Built gradually - used in an exception at the end of parsing.  bool validate_;  bool substitute_entities_;};} // namespace xmlpp#endif //__LIBXMLPP_PARSER_H

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?