在C++中使用TinyXML在用户从openfiledialog中选择的项目之间写入换行符
write the newline between Items which user selected from a openfiledialog using TinyXML in 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:UsersPublicPicturesSample PicturesChrysanthemum.jpgC:UsersPublic PicturesSample PicturesChrysanthemum.jpg
</images>
</opencv_storage>
如何在这些名称之间写入换行符?
非常感谢!
更好/更整洁的解决方案是将每个项目存储在自己的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"标记就可以构建完整的列表,而不必担心解析每一行。
相关文章:
- Visual Studio 中静态库项目之间的未解析外部
- OpenGL GLFW GLAD 在项目之间共享 Visual C++.
- 使用 .depends 指定 SUBDIRS 项目之间的依赖关系不起作用
- 在同一解决方案中的项目之间传递 CStrings
- 在Xamarin.Forms和QT项目之间共享常见代码
- 在项目之间共享类,同时绕过stdafx.h依赖关系
- 如何使用Bamboo CI处理C++CMake项目之间的依赖关系
- QTreeWidget使用拖放在两个项目之间插入
- 在C++项目和C#项目之间传递指针,而不在C#项目上使用unsafe
- C++/C在Visual Studio中的两个项目之间共享全局变量
- 项目之间的 C++ 标头
- Visual Studio C++托管测试项目和本机单元测试项目之间的区别
- 在C++中使用TinyXML在用户从openfiledialog中选择的项目之间写入换行符
- 代码::阻止项目之间的依赖关系
- 如何在Visual Studio中的项目之间共享C++源代码文件
- 在项目之间共享源文件
- 如何在 Visual C++ 中的项目之间共享代码,如何在静态库中的静态变量"unresolved external symbol"共享代码
- 在c++项目之间共享中间文件
- 在两个项目之间链接时,获取虚拟函数的链接错误
- 在Visual C++10中在项目之间共享文件