На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> класс для представления XML , C++ класс, эффективно представляющий структуру XML
    Нужен класс, желательно совместимый с STL-итераторами, для представления XML документа.
    Подозреваю, что не я первый с этим столкнулся, но пока не нашёл доступных сырцов. Может кто знает где такое есть?
    Написал простенький класс типа:
    ExpandedWrap disabled
       
      class CNamedValue
      {
      public:
        CNamedValue(LPCTSTR name = _T(""), LPCTSTR value = _T(""), CNamedValue *parent = 0);
        CNamedValue(const CNamedValue& o);
        CNamedValue& operator = (const CNamedValue&);
        virtual ~CNamedValue();
       
        //NOTE! this function should be redefined in every child class
        virtual std::auto_ptr<CNamedValue>
          create(LPCTSTR name, LPCTSTR value, CNamedValue *parent) {return std::auto_ptr<CNamedValue>(new CNamedValue(name, value, parent));}
       
        virtual CNamedValue&  add(const CNamedValue& o);
        virtual CNamedValue&  add(LPCTSTR name, LPCTSTR value = _T(""), CNamedValue *parent = 0);
        virtual int       size() const;
       
        typedef std::vector <CNamedValue> VNAMEDVALUE;
        typedef VNAMEDVALUE::iterator     iterator;
        typedef VNAMEDVALUE::const_iterator   const_iterator;
       
        virtual iterator      begin();
        virtual const_iterator    begin() const;
        virtual iterator      end();
        virtual const_iterator    end() const;
        virtual iterator      find(LPCTSTR lpszName);
       
        virtual const tstring&    name() const;
        virtual const tstring&    name(LPCTSTR lpszName);
        virtual const tstring&    value() const;
        virtual const tstring&    value(LPCTSTR lpszValue);
        virtual CNamedValue*      parent() const;
       
        //XML related
        virtual LPCWSTR   xmlTag() const;     //xml tag designated to named value
        virtual LPCWSTR   xmlName() const;    //xml attribute for name
        virtual LPCWSTR   xmlValue() const;   //xml attribute for value
       
      private:
        struct    Impl;
        Impl      *m_pimpl;
      };


    Но поддерживаемая структура XML-я в нём очень ограничена (аттрибуты только NAME и VALUE), а хотелось бы произвольный набор атрибутов со значениями для каждого узла и ещё бы с поддержкой одиночных тэгов (т.е. <something a="1" b="2" />), а не только парных (т.е. <some>...</some>).

    Заранее благодарен за помощь!
    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script execution time: 0,0220 ]   [ 16 queries used ]   [ Generated: 3.05.24, 08:16 GMT ]