2017-03-09 69 views
0

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

,当我在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 ++中打开它时,我的最终输出文件看起来格式化了吗?

回答

1

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

在您的具体情况:

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

谢谢你对我有用。我需要在插入和加载之前添加它。 –

0

看那FormatXMLData()功能:

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

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

+0

谢谢Remy Leeau,我使用Options << doNodeAutoIndent,它适用于我, –