⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 document.h

📁 This library provides a C++ interface to XML files. It uses libxml 2 to access the XML files, and in
💻 H
字号:
/* document.h * this file is part of libxml++ * * parts of the code copyright (C) 2003 by Stefan Seefeld * others copyright (C) 2003 by libxml++ developer's team * * this file is covered by the GNU Lesser General Public License, * which should be included with libxml++ as the file COPYING. */#ifndef __LIBXMLPP_DOCUMENT_H#define __LIBXMLPP_DOCUMENT_H#include <libxml++/exceptions/parse_error.h>#include <libxml++/exceptions/internal_error.h>#include <libxml++/nodes/element.h>#include <libxml++/dtd.h>#include <libxml++/api_export.h>#include <ostream>#ifndef DOXYGEN_SHOULD_SKIP_THISextern "C" {  struct _xmlDoc;  struct _xmlEntity;}#endif //DOXYGEN_SHOULD_SKIP_THISnamespace xmlpp {typedef enum {    XML_INTERNAL_GENERAL_ENTITY = 1,    XML_EXTERNAL_GENERAL_PARSED_ENTITY = 2,    XML_EXTERNAL_GENERAL_UNPARSED_ENTITY = 3,    XML_INTERNAL_PARAMETER_ENTITY = 4,    XML_EXTERNAL_PARAMETER_ENTITY = 5,    XML_INTERNAL_PREDEFINED_ENTITY = 6} XmlEntityType;/** * Represents a XML document in the dom model. */class LIBXMLPP_API Document : NonCopyable{  //Ensure that libxml is properly initialised:  class Init  {  public:    Init();  };    friend class DomParser;  friend class SaxParser;  public:  explicit Document(const std::string& version = "1.0");  virtual ~Document();    /** @return The encoding used in the source from which the document has been loaded.    */  std::string get_encoding() const;    Dtd* get_internal_subset() const;    void set_internal_subset(const std::string& name,                           const std::string& external_id,                           const std::string& system_id);  /** Return the root node.   * This function does _not_ create a default root node if it doesn't exist.   * @return A pointer to the root node if it exists, 0 otherwise.   */  Element* get_root_node() const;  /** Creates the root node.   * @param name The node's name.   * @param ns_uri The namespace URI. A namspace declaration will be added to this node, because it could not have     been declared before.   * @param ns_prefix The namespace prefix to associate with the namespace. If no namespace prefix is specified then     the namespace URI will be the default namespace.   */  Element* create_root_node(const std::string& name,                            const std::string& ns_uri = std::string(),                            const std::string& ns_prefix = std::string() );  /** Append a new comment node.   * @param content The text. This should be unescaped - see ContentNode::set_content().   * @returns The new comment node.   */  CommentNode* add_comment(const std::string& content);  /** Write the document to a file.   * @param filename   * @param encoding If not provided, UTF-8 is used   */  void write_to_file(const std::string& filename, const std::string& encoding = std::string());  /** Write the document to a file.   * The output is formatted by inserting whitespaces, which is easier to read for a human,   * but may insert unwanted significant whitespaces. Use with care !   * @param filename   * @param encoding If not provided, UTF-8 is used   */  void write_to_file_formatted(const std::string& filename, const std::string& encoding = std::string());  /** Write the document to the memory.   * @param encoding If not provided, UTF-8 is used   */  std::string write_to_string(const std::string& encoding = std::string());  /** Write the document to the memory.   * The output is formatted by inserting whitespaces, which is easier to read for a human,   * but may insert unwanted significant whitespaces. Use with care !   * @param encoding If not provided, UTF-8 is used   * @return The written document.   */  std::string write_to_string_formatted(const std::string& encoding = std::string());  /** Write the document to a std::ostream.   * @param output A reference to the stream in which the document will be written   * @param encoding If not provided, UTF-8 is used   * @warning This method is much less efficient than write_to_string if you want to dump the   * document to a buffer or the standard output. Writing to a fstream is almost as fast as write_to_file   */  void write_to_stream(std::ostream& output, const std::string& encoding = std::string());  /** Write the document to a std::ostream.   * The output is formatted by inserting whitespaces, which is easier to read for a human,   * but may insert unwanted significant whitespaces. Use with care !   * @param output A reference to the stream in which the document will be written   * @param encoding If not provided, UTF-8 is used   * @warning See write_to_stream   */  void write_to_stream_formatted(std::ostream & output, const std::string& encoding = std::string());  /** Add an Entity declaration to the document.   * @param name The name of the entity that will be used in an entity reference.   * @param type The type of entity.   * @param publicId The public ID of the subset.   * @param systemId The system ID of the subset.   * @param content The value of the Entity. In entity reference substitutions, this   * is the replacement value.   */  virtual void set_entity_declaration(const std::string& name, XmlEntityType type,                                      const std::string& publicId, const std::string& systemId,                                      const std::string& content);protected:  /** Retrieve an Entity.   * The entity can be from an external subset or internally declared.   * @param name Then name of the entity to get.   * @returns A pointer to the libxml2 entity structure.   */  _xmlEntity* get_entity(const std::string& name);private:  virtual void do_write_to_file(const std::string& filename, const std::string& encoding, bool format);  virtual std::string do_write_to_string(const std::string& encoding, bool format);  virtual void do_write_to_stream(std::ostream& output, const std::string& encoding, bool format);  static Init init_;  Document(_xmlDoc* doc);  _xmlDoc* impl_;};} //namespace xmlpp#endif //__LIBXMLPP_DOCUMENT_H

⌨️ 快捷键说明

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