C++ 在用户使用C+中的TinyXML从openfiledialog中选择的项目之间写入换行符+;

C++ 在用户使用C+中的TinyXML从openfiledialog中选择的项目之间写入换行符+;,c++,newline,filenames,openfiledialog,tinyxml,C++,Newline,Filenames,Openfiledialog,Tinyxml,我在项目中使用TinyXML库生成Xml文件。(C++Visual Studio 2010) 当用户按下浏览按钮时,他/她可以选择多个图片或文件 我想把每个名字都写在一行,但都要放在两个标签之间。我的意思是我希望在输出中包含以下代码: <?xml version="1.0"?> <opencv_storage> <images> ./images/cam01.jpg ./images/cam02.jpg ./ima

我在项目中使用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>

/图片/cam01.jpg
/图片/cam02.jpg
/图片/cam03.jpg
/图片/cam04.jpg
/图片/cam05.jpg
/图片/cam06.jpg
/图片/cam07.jpg
/图片/cam08.jpg
/图片/cam09.jpg
/图片/cam10.jpg
/图片/cam11.jpg
/图片/cam12.jpg
/图片/cam13.jpg
/图片/cam14.jpg
但是我不知道如何才能在他们之间写下新的一行。 我的代码如下:

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");

     }
int NumberOfFile=0;
数组^NamesOfSelectedFiles=gcnew数组(100);
TiXmlDocument文件;
TiXmlElement*味精;
TiXmlDeclaration*dec1=新的TiXmlDeclaration(“1.0”、“1.0”、“1.0”);
文件.LinkedChild(dec1);
TiXmlElement*root=新的TiXmlElement(“opencv_存储”);
document.LinkEndChild(root);
msg=新的TiXmlElement(“图像”);
openFileDialog1->Title=“选择图像文件”;
如果(openFileDialog1->ShowDialog()==System::Windows::Forms::DialogResult::OK)
{
对于每个(openFileDialog1->SafeFileNames中的字符串^file)
{
字符串^orig1=gcnew字符串(openFileDialog1->FileName);
pin_ptr wch1=ptr字符串字符(orig1);
原尺寸1=wcslen(wch1)+1;
const size_t newsize1=100;
大小\u t转换字符1=0;
char nstring1[newsize1];
wcstombs(和转换字符1、nstring1、origsize1、wch1、截断);
TiXmlText*txt=新的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>

C:\Users\Public\Pictures\Sample Pictures\jummy.jpgC:\Users\Public\Pictures\Sample Pictures\jummy.jpg
如何在这些名称之间写换行符


非常感谢你

更好/更简洁的解决方案是将每个项目存储在自己的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>

/图片/cam01.jpg
/图片/cam02.jpg
/图片/cam03.jpg

然后,您只需枚举“image”标记以建立完整列表,而不必担心解析每一行。

更好/更简洁的解决方案是将每个项目存储在其自己的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>

/图片/cam01.jpg
/图片/cam02.jpg
/图片/cam03.jpg

然后,您只需枚举“image”标记即可建立完整的列表,而不必担心解析每一行。

no它不起作用;)不,它不起作用;)你是说我把每一个都作为一个项目添加?不,我不能,因为我的项目为另一个项目生成输入,我应该按照我编写的代码编写。我无法更改:-)你的意思是我将它们作为一个项目添加?不,我不能,因为我的项目为另一个项目生成输入,我应该按照我编写的代码编写。我不能改变它:-)