星期四, 1月 12, 2006

發現: TinyXml, 原來是zlib license

在sourcefroge。

Document裏說:
Features:
  1. 可以自行決定是否使用STL。TinyXml只使用STL的string class,但是有implement自己的 string class。所以可以決定要使用STL或是TinyXml自己的版本。
     #define TIXML_USE_STL

  2. 支援UTF-8,TinyXml會自動偵測XML file使用的語系:
    • lead byte 有0xef,0xbb,0xbf
    • XML file中declaration tag有宣告encoding = "UTF-8"
    • XML file中有declararion tag。
    • XML file中declaration tag宣告encoding 不是UTF-8,TinyXML會用legacy Mode。
  3. Entities ,TinyXML認識以下意義
     & &
    < <
    &gt; >
    &quot; "
    ' '
  4. streams : 當使用STL時,可以使用stream operator作file operation
  5. White Space:提供SetCondenseWhiteSpace(bool),決定是否將多個space縮減成一個。
  6. Handles : 這個很方便,當要由XML tree中某個entity 作操作時,常常要由root以下,一個一個檢查是不是NULL,程式寫起來很醜:
    TiXmlElement* root = document.FirstChildElement( "Document" );
    if ( root )
    {
    TiXmlElement* element = root->FirstChildElement( "Element" );
    if ( element )
    {
    TiXmlElement* child = element->FirstChildElement( "Child" );
    if ( child )
    {
    TiXmlElement* child2 = child->NextSiblingElement( "Child" );
    if ( child2 )
    {
    // Finally do something useful.
    但是TinyXml 可以用
    TiXmlHandle docHandle( &document );
    TiXmlElement* child2 = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).Child( "Child", 1 ).Element();
    if ( child2 )
    {
    // do something useful
    來作
  7. Row, Columm Tracking : 有時候需要知道目前的entiry是在XML file中的那一行,那一列,例如:回報parse error。TinyXML提供TiXmlBase::Row(), Columm()取得這個資料

沒有留言:

網誌存檔