22 Mayıs 2017 Pazartesi

serialization xml_oarchive Sınıfı

Giriş
Şu satırı dahil ederiz.
#include <boost/archive/xml_oarchive.hpp>
Version İçin Açıklama
Version 14 olan bir xml'i versiyon 13 olan xml_iarchive açamaz. Açıklaması şöyle
We ran into the trouble that the client is now built and delivered with Boost 1.60 while the Server is still 1.59. The client now sends an archive-version of 14 while the server only knows about 13. Therefore throwing an "unsupported version".
XML Örnekleri
Çıktı olarak şunu alırız. boost_serialization signature="serialization::archive" version="10" boost'un kendi versiyon sayısıdır.
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE boost_serialization>
<boost_serialization signature="serialization::archive" version="10">
  <EventSet class_id="0" tracking_level="0" version="0">
    <Size>1</Size>
    <Event>
      ...
    </Event>
  </EventSet>
</boost_serialization>
Çıktı olarak şunu alırız. sz collection sınıfında kaç tane nesne olduğunu gösterir.
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE boost_serialization>
<boost_serialization signature="serialization::archive" version="14">
<tree class_id="0" tracking_level="0" version="0">
  <sz>1</sz>
  <INTERVAL class_id="1" tracking_level="0" version="0">
    <bb>2</bb>
    <l>28</l>
    <u>39</u>
  </INTERVAL>
  <SET class_id="2" tracking_level="0" version="0">
    <count>1</count>
    <item_version>0</item_version>
    <item class_id="3" tracking_level="0" version="0">
      <city_>cpur</city_>
      <low_>28</low_>
      <high_>39</high_>
    </item>
  </SET>
</tree>
Constructor - stream
Şöyle yaparız.
ba::xml_oarchive oa (std::cout);
Constructor - stream + flag
Şöyle yaparız.
std::stringstream oss;
ba::xml_oarchive oa (oss, boost::archive::no_header);
operator << metodu - class
Şöyle yaparız. Her zaman BOOST_SERIALIZATION_NVP ile kullanılır. Macroya geçilen değişken ismi xml tag ismi olarak karşımıza çıkar.
Foo foo;
oa << BOOST_SERIALIZATION_NVP(foo);
Çıktı olarak no_header kullanmazsak şunu alırız.
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE boost_serialization>
<boost_serialization signature="serialization::archive" version="14">
  <foo class_id="0" tracking_level="0" version="0">
      ...
  </foo>
</boost_serialization>
operator << metodu - STL
Şöyle yaparız.
std::set<something> my_set; // populate it somehow too
oa << boost::serialization::make_nvp("Things", my_set);
Çıktı olarak no_header kullanırsak şunu alırız.
<Things>
    <item>element of set</item>
    <item>another first element of set</item>
</Things>

Hiç yorum yok:

Yorum Gönder