00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00023
00029
00030
00031 #ifndef _XML_TREE_SHOW_H_INCLUDED_
00032 #define _XML_TREE_SHOW_H_INCLUDED_
00033
00034 using namespace cttl;
00035
00041 struct xml_tree_show : public std::unary_function< inode_reader<>, void >
00042 {
00044 size_t level;
00045
00047 std::vector< std::string > const& vect_xml_names;
00048
00050 std::vector< std::string > const& vect_xml_text;
00051
00053 xml_tree_show(
00054 size_t level_,
00055 std::vector< std::string > const& vect_xml_names_,
00056 std::vector< std::string > const& vect_xml_text_
00057 )
00058 :
00059 level( level_ ),
00060 vect_xml_names( vect_xml_names_ ),
00061 vect_xml_text( vect_xml_text_ )
00062 {
00063 }
00064
00066 void operator=( xml_tree_show const& ) const
00067 {
00068 }
00069
00071 void show_level( char c_ = '.' ) const
00072 {
00073 for ( size_t lvl = 0; lvl < level; ++lvl )
00074 std::cout << c_;
00075 }
00076
00078 void operator() ( inode_reader<> const& inode_ ) const
00079 {
00080 show_level();
00081 std::cout
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095 << vect_xml_names[ inode_[ ELEMENT_NAME ] ]
00096 << std::endl
00097 ;
00098
00099 for ( inode_reader<> attr = inode_( FIRST_ATTRIBUTE ); attr != inode_.end(); ++attr ) {
00100 show_level();
00101 std::cout
00102 << '.'
00103 << vect_xml_names[ attr[ ATTRIBUTE_NAME ] ]
00104
00105
00106
00107
00108
00109
00110
00111 << '='
00112 << vect_xml_text[ attr[ ATTRIBUTE_VALUE ] ]
00113 << std::endl
00114 ;
00115 }
00116
00117 for ( inode_reader<> txt = inode_( FIRST_TEXT ); txt != inode_.end(); ++txt ) {
00118 show_level();
00119 std::cout
00120 << '.'
00121 << "txt="
00122 << vect_xml_text[ txt[ TEXT_VALUE ] ]
00123 << std::endl
00124 ;
00125 }
00126
00127 std::for_each(
00128 inode_( FIRST_ELEMENT ),
00129 inode_.end(),
00130 xml_tree_show(
00131 level + 1,
00132 vect_xml_names,
00133 vect_xml_text
00134 )
00135 );
00136
00137 }
00138
00139 };
00140
00141
00142 #endif //_XML_TREE_SHOW_H_INCLUDED_