@VitaliiUA

TinyXML2 Запись масива в XML Файл, как реализовать?

Мне нужно записать в XML файл масив, я нашел метод SetText, но если вызвать но повторный вызов перезаписывает, я так понял что нужно конвертировать в масив чаров, он только его принимает, если вы знаете какойто вариант получше отозвитесь

Должно быть вот так,
<root>
 <primes> 101 103 107 149 743  751… </primes>
</root>


Вот мой код.
XMLDocument Doc;
	XMLNode * pRoot = Doc.NewElement("root");
	Doc.InsertFirstChild(pRoot);
	XMLElement * pElement = Doc.NewElement("primes");
	for (const auto &it : First_interval) {
		pElement->SetText(it);
	}
	for (const auto &it : Second_interval) {
		pElement->SetText(it);
	}
  • Вопрос задан
  • 138 просмотров
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Массивы в xml т̶о̶ ̶е̶щ̶ё̶ ̶и̶з̶в̶р̶а̶щ̶е̶н̶и̶е, обычно пишутся как-то так:
<root>
  <primes>
    <prime>101</prime>
    <prime>103</prime>
    <prime>107</prime>
    ...
  </primes>
</root>
То, что вы пытаетесь сделать - это не массив, а строка. Её надо сформировать заранее и записать уже сформированную одним вызовом SetText.
Ответ написан
Комментировать
@VitaliiUA Автор вопроса
Спасибо, я костылем вроде сделал, но ужасно смотрится
std::stringstream ss;
	char c[400];
	XMLDocument Doc;
	XMLNode * pRoot = Doc.NewElement("root");
	Doc.InsertFirstChild(pRoot);
	XMLElement * pElement = Doc.NewElement("primes");
	for (const auto &it : First_interval) {
		ss << it;
	}
	for (const auto &it : Second_interval) {
		ss << it;
	}
	for (int i = 0,j=3; i < 400; i++,j+=4) {
		if(c[i]!=' ')ss >> c[i];
		if(j<400)c[j] = ' ';
	}
	pElement->SetText(c);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы