2017-03-09 89 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,它適用於我, –