У меня проблема с TinyXML, которую я не могу исправить. Я расширил приложение MFC, используя C++ для работы. Приложение выполняет автоматизированное тестирование. После завершения он сохраняет все данные в файле XML. Ниже начала моего дерева DOM.
<?xml version="1.0" encoding="utf-8" ?>
<TestData>
<Operator>Alex</Operator>
<ParentBarCode>12345
</ParentBarCode>
<Measurements>
Проблема в том, что библиотека, кажется, добавляет случайную новую строку после 12345. Это должно быть:
<ParentBarCode>12345</ParentBarCode>
Не могли бы вы мне помочь, пожалуйста? Я пробовал все... Фрагмент кода ниже. Кроме того, есть ли способ удалить новую строку перед закрытием тега нового элемента, т.е. перед
</ParentBarCode>??
//Code starts here
TiXmlDocument doc;
TiXmlDeclaration * decl = new TiXmlDeclaration("1.0","utf-8", "");
//doc.FirstChildElement();
doc.LinkEndChild(decl);
TiXmlElement *rootelement = new TiXmlElement("TestData");
doc.LinkEndChild(rootelement);
TiXmlText *textTestData = new TiXmlText("");
rootelement->LinkEndChild(textTestData);
//Operator node
TiXmlElement *Operator = new TiXmlElement("Operator");
//Tree root
rootelement->LinkEndChild(Operator);
TiXmlText *textOperator = new TiXmlText("Alex");
Operator->LinkEndChild(textOperator);
//ParentBarcode Node
TiXmlElement *barcode = new TiXmlElement("ParentBarCode");
//Tree root
rootelement->LinkEndChild(barcode);
//saving serial to a stringstream
stringstream serial;
serial << (DlgPtr->m_lSerialNumber);
std::string myserial = serial.str();
//Removing spaces
myserial.erase(std::remove_if(myserial.begin(), myserial.end(),::isspace), myserial.end());
char buffer[sizeof(myserial) + 1];
//int ret = snprintf(buffer, sizeof(myserial), "%05ld", DlgPtr>m_lSerialNumber);
int ret = sprintf_s(buffer, sizeof(myserial), "%05ld", myserial);
const char * charSerial = buffer;
TiXmlText *textbarcode = new TiXmlText(charSerial);
barcode->LinkEndChild(textbarcode);
Никаких сообщений об ошибках, просто тег элемента не закрывается на той же строке. Я сделал небольшой проект песочницы с точно таким же деревом DOM, но там все работало нормально. Я подумал, может быть, есть еще одна проблема, которую я не вижу в sprintf_s?? Заранее спасибо.
sizeof(myserial)
наmyserial.size()
- person Alan Birtles   schedule 10.09.2019TiXmlText *textbarcode = new TiXmlText(myserial.cstr());
- person Alan Birtles   schedule 10.09.2019sprintf_s(buffer, sizeof(myserial), "%05ld", myserial);
совершенно неправильно - person Alan Birtles   schedule 10.09.2019