1

プロジェクトで TinyXML ライブラリを使用して Xml ファイルを生成しています。(C++ ビジュアルスタジオ 2010)

ユーザーが参照ボタンを押すと、複数の写真またはファイルを選択できます。

それぞれの名前を 1 行で書きたいのですが、それらはすべていくつかのタグの間にあります。つまり、出力にこのコードが必要です:

   <?xml version="1.0"?>
    <opencv_storage>
    <images>
    ./images/cam01.jpg
    ./images/cam02.jpg
    ./images/cam03.jpg
    ./images/cam04.jpg
    ./images/cam05.jpg
    ./images/cam06.jpg
    ./images/cam07.jpg
    ./images/cam08.jpg
    ./images/cam09.jpg
    ./images/cam10.jpg
    ./images/cam11.jpg
    ./images/cam12.jpg
    ./images/cam13.jpg
    ./images/cam14.jpg
    </images>
    </opencv_storage>

しかし、それらの間に新しい行をどのように書くことができるかわかりません。ここに私のコードで:

int NumberOfFile = 0;
  array<String^>^ NamesOfSelectedFiles = gcnew array<String^>(100);

  TiXmlDocument document; 
  TiXmlElement* msg;
  TiXmlDeclaration* dec1 = new TiXmlDeclaration("1.0","","");
  document.LinkEndChild(dec1);

  TiXmlElement * root = new TiXmlElement( "opencv_storage" );  
  document.LinkEndChild( root ); 
  msg = new TiXmlElement("images");

  openFileDialog1->Title = "Select an Image file";

 if (openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK)

  {
     for each (String^ file in openFileDialog1->SafeFileNames)
         {
            String ^orig1 = gcnew String(openFileDialog1->FileName);
             pin_ptr<const wchar_t> wch1 = PtrToStringChars(orig1);
             size_t origsize1 = wcslen(wch1) + 1;
             const size_t newsize1 = 100;
             size_t convertedChars1 = 0;
             char nstring1[newsize1];
         wcstombs_s(&convertedChars1, nstring1, origsize1, wch1, _TRUNCATE);

         TiXmlText* txt = new TiXmlText(nstring1);
         msg->LinkEndChild(txt);
         }
              root->LinkEndChild(msg);


          document.SaveFile("VID5.xml");

     }

このコードによって、私はそのようなファイルを生成します:

 <?xml version="1.0" ?>
    <opencv_storage>
    <images>C:\Users\Public\Pictures\Sample Pictures\Chrysanthemum.jpgC:\Users\Public  \Pictures\Sample Pictures\Chrysanthemum.jpg
    </images>
    </opencv_storage>

この名前の間に改行文字を書くにはどうすればよいですか?

どうもありがとうございます!

4

1 に答える 1

1

より良い/より適切な解決策は、各アイテムを独自の XML 要素に格納することです。たとえば、次のようになります。

   <?xml version="1.0"?>
    <opencv_storage>
    <images>
     <image>./images/cam01.jpg</image>
     <image>./images/cam02.jpg</image>
     <image>./images/cam03.jpg</image>
    </images>
    </opencv_storage>

次に、「画像」タグを列挙して完全なリストを作成するだけで、各行を個別に解析することを心配する必要はありません。

于 2013-08-11T12:32:01.987 に答える