LiquidXMLStudioはXMLをC ++コードにマップします

  マルクスによると、人間社会には3つの要素があります。
  
  生産性、生産関係、富の再分配です。
  
  一般的に言って、個人的には富の再配分が中心だと思いますが、吊りワイヤーについては、生産性に注目しましょう。父のリー・ガンについては考えてみてください。
  
  生産性の中核はツールです。
  
  したがって、プログラマーとして、ツールを習得することは非常に重要です。人を雇う前に、私は理論とツールにも同じように重点を置きました。道具に注意を払わない人は、練習に注意を払わない人であることが多い。Zhao Kuoの理論は悪くありませんが、戦うことはできません。その理由の1つは、その実践が十分ではない、またはその実践が評価されていないことです。
  
  ここで私は自分の心理学を要約します。あいにく入って私が書いたテキストをご覧になった場合は、しばらくお待ちください。
  
  最近XMLツールを使用していますが、XMLSpyとLiquidXMLStudioの2つが主なツールです。
  
  ********************
  
  始めましょう:
  
  まずWebページを見てください。
  
  これも私の習慣です。
  
  しかし、ここのリストは完全ではありません。
  
  いくつかの側面があることを願っています。
  
  * C ++コードを生成できます。この関数はここで呼び出されます:マップ。mapは、xsdからコードにマップすることを意味します。もちろん、他にも意味はありますが、一般的にはxmlからxml、xmlからDBなどのマップは使われていませんが、わかりやすく書いてありますが、マップだけということで、今はこれを意味しているようです。CまたはC ++コードを生成する理由は、基礎となるパーサーがCで記述されているためです。このレベルで切り替えたくありません。
  
  XML自体がインターフェース情報のベアリングだからです。新しい言語を追加する必要はありません。
  
  *生成されたコードがオープンソースのXMLライブラリに基づいている場合は、より優れています。
  
  現時点では、調査後の最適なXMLオープンソースライブラリはlibxml2とxercesですが、一般的に自分で作成する場合はlibxml2を選択します。
  
  このライブラリはCをベースにしているため、クロスプラットフォームにも便利です。
  
  *その他のXML自動編集ツール。言うまでもありません。
  
  しかし実際には、この要件を満たす編集者は見つかりませんでした。
  
  XMLSpyとLiquidXMLStudioに加えて、実際には強力な2つの強力な機能があることがわかりました。
  
  http://en.wikipedia.org/wiki/Comparison_of_XML_editors
  
  しかし、なぜ一部がそれほど高価なのか理解できませんでした。プログラマーは常にプログラマーの視点から世界を見るようで、その中で最も高価なMadCap FlareはLiquidXMLStudioよりも桁違いに高価です。
  
  MadCap FlareとXMLSeedXMLスキーマエディターは
  
  、どちらも非プログラマーにとって似ているようです。それらが高価である理由は、彼らが実際にXMLの意味を使用しているためです:完全なドキュメント(プログラマーの名前ではなく:拡張性ML)。これはプログラマーではない人のためのものであり、プログラマーが一般的にワイヤをぶら下げていることを示しているようです。海外でも同じかもしれません。
  
  ハ。言うまでもなく、ハンガーはすべて振り返ります。そのため、焦点はXMLSpyとLiquidXMLStudioに戻ります。(なぜ吊りワイヤーを使用するのですか?QQピンインがあるため、背が高いため、単語を入力できません)。
  
  驚いたことに、XMLSpyは非常に高価です。非プログラマに追いつきます。
  
  ただし、2014年の最新バージョンがなく、XMLからC ++へのMAPも完了できるとのことな
  
  ので、LiquidXMLStudioのみを使用。
  
  LiquidXMLStudioはさまざまな言語をマップできますが、C ++を使用しました。
  
  その方法については、書きませんこのページを見てください:
  
  http : //www.liquid-technologies.com/Liquid-Products/LearnAbout/XmlDataBinding.aspx
  
  は壁に囲まれていません。
  
  これが私の最大の懸念事項の1つであることを言うのを忘れていました
  
  。
  
  もちろん次はDバージョンです。
  
  次に、次のバージョンのVS 2003を使用することをお勧めします。XPで実行できます。
  
  以上が私の要望です。
  
  ************************************************** *********************
  
  調査後、一時的に要件を満たしていない場合。
  
  しかし、xmlstudio2011が最適です。亀裂があるため、C ++コードを生成できます。
  
  オープンソースのXMLライブラリではありませんが、それで十分です。
  
  ************************************************** *********************
  
  以下はサンプルコードですが、最も重要なのは、これらのいくつかの
  
  BookStoreLib :: CBookstorePtr spBS = BookStoreLib :: CBookstore :: CreateInstance();
  
  BookStoreLibです。 :CBookTypePtr spBook = spBS-> GetBook()-> Add();
  
  spBook-> SetTitle(_T( "ベンジャミンフランクリンの自伝"));
  
  spBook-> SetPrice(8.99);
  
  spBook-> SetPublicationdate(LtXmlLib12 :: CDateTime(1981、5、11));
  
  spBook-> SetISBN(_T( "1-861003-11-0"));
  
  spBook-> GetAuthor()-> SetFirst_name(_T( "Benjamin"));
  
  spBook-> GetAuthor()-> SetLast_name(_T( "Franklin"));
  
  spBook- > SetGenre(_T( "autobiography"));
  
  std :: tstring strXml = spBook-> ToXml();
  
  1. XSDを開き、次のようにします:ウィザードを開きます:
  
  2. C ++言語を選択します
  
  3.一部の情報を変更できます(オプション)
  
  4 。テストXMLファイルに入力します。
  
  5. OK、プロジェクトを開いた後
  
  6.プロジェクトを開いて、コーディングを少し実行します。Liquidは自動的にchmヘルプドキュメントを作成します。
  
  以下のように、実際の例を生成できます。
  
  ちなみに、選択したxmlはサンプルプロジェクトの下にあります。
  
  D:\ Program Files(x86)\ Liquid Technologies \ Liquid XML 2014 \ Examples \ BookStore \ Schemas \ BookStore.xsd
  
  D:\ Program Files(x86)\ Liquid Technologies \ Liquid XML 2014 \ Examples \ BookStore \ Data Files \ BookStoreSample。 xml
  
  **********************************************
  
  //作成XMLファイルを
  
  bs :: CBookstorePtr にロードするクラスのインスタンスelm = bs :: CBookstore :: CreateInstance();
  
  //ファイルからオブジェクトにxmlをロードします(
  
  // xmlドキュメントのルート要素は<bookstore>でなければなりません
  
  。elm-> FromXmlFile(lpctFilename);
  
  // -------- <haoyujie>- ------------
  
  bs :: CBookTypePtr spBook = elm-> GetBookCol()-> Add();
  
  spBook-> SetTitle(_T( "The Autobiography of Benjamin Franklin"));
  
  spBook->
  
  spBook-> SetPublicationdate(LtXmlLib12 :: CDateTime(1981、5、11));
  
  spBook-> SetISBN(_T( "1-861003-11-0"));
  
  spBook-> GetAuthor()-> SetFirst_name(_T( "Benjamin"));
  
  spBook-> GetAuthor()-> SetLast_name(_T( "Franklin"));
  
  spBook-> SetGenre(_T( "autobiography"));
  
  // -------- </ haoyujie> --------------
  
  ********************** ***********************
  
  #include "stdafx.h"
  
  #include "../BookStoreLib.h"
  
  #include "../BookStoreLib/Bookstore。 h "
  
  名前空間LtXmlLib12を使用。
  
  //宣言を転送する
  
  void SimpleTestBookStoreLibCBookstore(LPCTSTR);
  
  void WriteTest();
  
  void ReadTest();
  
  /// <概要>
  

  
  /// </ summary>
  
  int main(int argc、char * argv [])
  
  {
  
  WriteTest();
  
  ReadTest();
  
  _tprintf(_T( "\ n \ nキーを押して終了します"));
  
  getchar();
  
  0を返します。
  
  }
  
  void WriteTest()
  
  {
  
  try
  
  {
  
  _tprintf(_T( "\ nXMLドキュメントを作成しています... \ n"));
  
  // XMLドキュメントを最初から作成する
  
  BookStoreLib :: CBookstorePtr spBS = BookStoreLib :: CBookstore :: CreateInstance();
  
  BookStoreLib :: CBookTypePtr spBook = spBS-> GetBook()-> Add();
  
  spBook-> SetTitle(_T( "ベンジャミンフランクリンの自伝"));
  
  spBook-> SetPrice(8.99);
  
  spBook-> SetPublicationdate(LtXmlLib12 :: CDateTime(1981、5、11));
  
  spBook-> SetISBN(_T( "1-861003-11-0"));
  
  spBook-> GetAuthor()-> SetFirst_name(_T( "Benjamin"));
  
  spBook-> GetAuthor()-> SetLast_name(_T( "Franklin"));
  
  spBook-> SetGenre(_T( "autobiography"));
  
  std :: tstring strXml = spBook-> ToXml();
  
  _tprintf(_T( "\ nこれはXMLです:\ n%s")、strXml.c_str());
  
  }
  
  catch(CLtException&e)
  
  {
  
  //注:例外には
  
  、エラーに関する詳細を提供する内部例外//が含まれている可能性が高く、GetFullMessage
  
  //それらすべてからのメッセージが連結されます。
  
  _tprintf(_T( "エラー-%s \ n")、e.GetFullMessage()。c_str());
  

  

  

  

  

  

  
  _tprintf(_T( "\ n既存のXMLドキュメントを読み込んでいます... \ n"));
  
  // XMLドキュメントを最初から作成する
  
  BookStoreLib :: CBookstorePtr spBS = BookStoreLib :: CBookstore :: CreateInstance();
  
  spBS-> FromXmlFile(_T( ".. \\ .. \\ .. \\ BookStoreSample.xml"));
  
  for(BookStoreLib :: CBookTypeCol :: iterator itr = spBS-> GetBook()-> begin();
  
  itr!= spBS-> GetBook()-> end();
  
  itr ++)
  
  {
  
  BookStoreLib :: CBookTypePtr spBook = * itr;
  
  _tprintf(_T( "本のタイトル%s \ n")、spBook-> GetTitle()。c_str());
  
  _tprintf(_T( "価格%f \ n")、spBook-> GetPrice());
  
  _tprintf(_T( "作成者%s%s \ n")、spBook-> GetAuthor()-> GetFirst_name()。c_str()、spBook-> GetAuthor()-> GetLast_name()。c_str());
  

  
  _tprintf(_T( "Publicationdate%s \ n")、spBook-> GetPublicationdate()。ToString()。c_str());
  
  else
  
  _tprintf(_T( "Publicationdate Not Listed \ n"));
  
  if(spBook-> IsValidISBN())
  
  _tprintf(_T( "ISBN%s \ n")、spBook-> GetISBN()。c_str());
  
  else
  
  _tprintf(_T( "リストされていないISBN \ n"));
  
  if(spBook-> IsValidGenre())
  
  _tprintf(_T( "ジャンル%s \ n")、spBook-> GetGenre()。c_str());
  
  else
  
  _tprintf(_T( "ジャンルはリストされていません\ n"));
  
  }
  
  }
  
  catch(CLtException&e)
  
  {
  
  //注:例外には内部例外が含まれている可能性があります
  
  //エラーに関する詳細を提供します
  

  
  _tprintf(_T( "エラー-%s \ n")、e.GetFullMessage()。c_str());
  
  }
  
  }

おすすめ

転載: www.cnblogs.com/aquariusunny/p/12729976.html