3

単純なXMLファイルがありますが、大きいです。まあ言ってみれば

<products>
    <product_id>98667</product_id>
        <name>Hiking Boots</name>
            <price>34.99</price>

    <product_id>10123</product_id>
        <name>Work Gloves</name>
            <price>12.99</price>

    <product_id>15773</product_id>
        <name>Belt</name>
            <price>14.99</price>
</products>

ファイル全体(たとえば500エントリ)のデータをタブ区切りのテキストファイルに書き込みたい。プロセスをさらによく理解するために、製品名と製品価格のみを書きたいとしましょう。典型的なTinyXmlチュートリアルがこのタイプの書き込みをカバーしている場所がわかりませんでした。

私のコード:

void MyProducts::writeProducts(const char *pFilename) {
  TiXmlDocument doc(pFilename);
  bool loadOkay = doc.LoadFile();
  if (loadOkay) {
    cout<<"The file loaded"<<endl;
    cout<<pFilename<<endl;
    cout<<doc<<endl;
  }
  else {
    cout<<"Failed to load file \"%s\"\n"<< pFilename<<endl;
  }
} // end function

通常のファイルのように1行ずつ解析したいのか、それともこのAPIでうまくいくのかわかりません。docの内容全体を印刷できるので、ファイルが読み込まれていることがわかります。どんな助けでも大歓迎です。関数が何を呼び出すかを知るだけの問題だと確信しています。

4

1 に答える 1

0

私は最初に彼らのチュートリアルを見ていきます。これは、基本的な XML の書き込みと読み取りを示しています。

上記のコメントは正しいです... XML ドキュメントをロードし (コード例のように)、XML をトラバースします。

ドキュメントを見ると、既に XMLDocument が読み込まれているため、RootElementメソッドを呼び出す必要があります。これは要素を返します。要素から、現在のノードに関する情報を引き出すことができます。ツリーの「さらに」先に進むには、TiXmlNode::IterateChildrenを使用してルート要素の子を調べる必要があります。ツリーをトラバースすると、TiXmlNode が返されます。次に、Nodes メソッドを使用してさまざまなクラス タイプを取得し、さまざまな情報を引き出します。

于 2011-12-02T12:47:16.260 に答える