Как добавить разрыв строки для каждого узла XML?

Как добавить разрыв строки для каждого дочернего элемента XML, чтобы выходные данные выглядели отформатированными?

Файл шаблона содержит <Faults> а также </Faults> теги. Теперь я хочу вставить разрыв строки внутри этого узла.

C ++ КОД:

_di_IXMLNode nodeFault = NULL;
IXMLNode *m_pRootNode = FormMain->GetBBReportTXMLDocPtr()->DocumentElement;
...
for(; it_Events != lstEvent.end(); it_Events++){
nodeFault = m_pRootNode->ChildNodes[EVENT_REPORT].Get(EXmlTagOrder::extoFaults)->AddChild("Fault");
nodeFault->Attributes[WideString("Entry")] = ((*it_Events).m_sEntry).c_str();
nodeFault->AddChild("Time")->Text = ((*it_Events).m_sTimeStamp).c_str();
nodeFault->AddChild("Code")->Text = ((*it_Events).m_sCode).c_str();
}

Но я не получаю вывод с разрывами строки или форматированием.

Когда я открываю файл XML в Блокноте, все узлы находятся в одной строке:

<Faults><Fault Entry="0"><Time>0</Time><Code>20</Code></Fault><Fault Entry="1"><Time>2</Time><Code>10</Code></Faults>

Файл XML выглядит отформатированным, когда я открываю его в Internet Explorer:

<Faults>
<Fault Entry="0">
<Time>0</Time>
<Code>20</Code>
</Fault>
<Fault Entry="1">
<Time>2</Time>
<Code>10</Code>
</Fault>
</Faults>

Как добавить разрыв строки для каждого узла, чтобы мой конечный выходной файл выглядел отформатированным при открытии его в Notepad ++?

0

Решение

Вы должны установить некоторые параметры форматирования перед сохранением в файл.

В вашем конкретном случае:

FormMain->GetBBReportTXMLDocPtr()->Options =
FormMain->GetBBReportTXMLDocPtr()->Options << doNodeAutoIndent
1

Другие решения

Посмотрите на FormatXMLData() функция:

Форматирует строку XML, чтобы она была более читабельной.

использование FormatXMLData преобразовать строку XML в формат, который представляет ее структуру. FormatXMLData изменяет строку ввода (XMLData), чтобы каждый узел элемента отображался в отдельной строке с соответствующим отступом для отражения его вложенности в иерархию узлов.

0