2013-12-10 42 views

回答

0

閱讀property_tree/xml_parser.hpp頭文件。這非常簡單。

這裏是最重要的部分,都在boost::property_tree::xml_parser命名空間:

/** 
    * Reads XML from an input stream and translates it to property tree. 
    * @note Clears existing contents of property tree. In case of error the 
    *  property tree unmodified. 
    * @note XML attributes are placed under keys named @c \<xmlattr\>. 
    * @throw xml_parser_error In case of error deserializing the property tree. 
    * @param stream Stream from which to read in the property tree. 
    * @param[out] pt The property tree to populate. 
    * @param flags Flags controlling the behaviour of the parser. 
    *    The following flags are supported: 
    * @li @c no_concat_text -- Prevents concatenation of text nodes into 
    *       datastring of property tree. Puts them in 
    *       separate @c \<xmltext\> strings instead. 
    * @li @c no_comments -- Skip XML comments. 
    * @li @c trim_whitespace -- Trim leading and trailing whitespace from text, 
    *       and collapse sequences of whitespace. 
    */ 
    template<class Ptree> 
    void read_xml(std::basic_istream< 
         typename Ptree::key_type::value_type 
        > &stream, 
        Ptree &pt, 
        int flags = 0) 
    { 
     read_xml_internal(stream, pt, flags, std::string()); 
    } 

    /** 
    * Reads XML from a file using the given locale and translates it to 
    * property tree. 
    * @note Clears existing contents of property tree. In case of error the 
    *  property tree unmodified. 
    * @note XML attributes are placed under keys named @c \<xmlattr\>. 
    * @throw xml_parser_error In case of error deserializing the property tree. 
    * @param filename The file from which to read in the property tree. 
    * @param[out] pt The property tree to populate. 
    * @param flags Flags controlling the bahviour of the parser. 
    *    The following flags are supported: 
    * @li @c no_concat_text -- Prevents concatenation of text nodes into 
    *       datastring of property tree. Puts them in 
    *       separate @c \<xmltext\> strings instead. 
    * @li @c no_comments -- Skip XML comments. 
    * @param loc The locale to use when reading in the file contents. 
    */ 
    template<class Ptree> 
    void read_xml(const std::string &filename, 
        Ptree &pt, 
        int flags = 0, 
        const std::locale &loc = std::locale()) 
    { 
     BOOST_ASSERT(validate_flags(flags)); 
     std::basic_ifstream<typename Ptree::key_type::value_type> 
      stream(filename.c_str()); 
     if (!stream) 
      BOOST_PROPERTY_TREE_THROW(xml_parser_error(
       "cannot open file", filename, 0)); 
     stream.imbue(loc); 
     read_xml_internal(stream, pt, flags, filename); 
    } 
+1

你能否解釋多爲那些誰不能訪問該鏈接? – 0x499602D2

+0

那裏。不可能更簡單。 – Julius

+1

謝謝! :==) – 0x499602D2