Как добавить разрыв строки для каждого дочернего элемента 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 ++?
Вы должны установить некоторые параметры форматирования перед сохранением в файл.
В вашем конкретном случае:
FormMain->GetBBReportTXMLDocPtr()->Options =
FormMain->GetBBReportTXMLDocPtr()->Options << doNodeAutoIndent
Посмотрите на FormatXMLData()
функция:
Форматирует строку XML, чтобы она была более читабельной.
использование
FormatXMLData
преобразовать строку XML в формат, который представляет ее структуру.FormatXMLData
изменяет строку ввода (XMLData
), чтобы каждый узел элемента отображался в отдельной строке с соответствующим отступом для отражения его вложенности в иерархию узлов.