Написать новую строку между элементами, которые пользователь выбрал из openfiledialog, используя TinyXML в C++

Я использую библиотеку TinyXML в своем проекте для создания файла XML. (C++ Visual Studio 2010)

когда пользователь нажимает кнопку обзора, он / она может выбрать более одного изображения или файла.

Я хочу написать каждое имя в одну строку, но все они между парой тегов. Я имею в виду, я хочу этот код в выводе:

   <?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>

Как я могу написать символ новой строки между этими именами?

Спасибо огромное!

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>

Затем вам просто нужно перечислить теги "image", чтобы создать полный список, не беспокоясь о разборе каждой отдельной строки.

Другие вопросы по тегам