如何为每个XML节点添加换行符?

时间:2017-03-09 13:45:34

标签: c++ xml c++builder c++builder-xe

如何为每个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>

当我在Internet Explorer中打开它时,XML文件看起来格式化了:

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

如何在每个节点上添加换行符,以便在Notepad ++中打开它时,我的最终输出文件看起来格式化了?

2 个答案:

答案 0 :(得分:1)

在保存到文件之前,您必须设置一些格式选项。

在您的具体案例中:

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

答案 1 :(得分:0)

查看FormatXMLData()函数:

  

格式化一串XML,使其更具可读性。

     

使用FormatXMLData将XML字符串转换为表示其结构的格式。 FormatXMLData更改输入字符串(XMLData),以便每个元素节点显示在其自己的行上,适当缩进以反映其在节点层次结构中的嵌套。