Я использую библиотеку 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>
Как я могу написать символ новой строки между этими именами?
Спасибо огромное!
Лучшим решением было бы хранить каждый элемент в своем собственном элементе 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, чтобы создать полный список, не беспокоясь о разборе каждой отдельной строки.
Других решений пока нет …