2017-03-09 20 views
0

各XML子ノードに改行を追加して、出力がフォーマットされたように見えるようにするにはどうすればよいですか?各XMLノードに改行を追加するにはどうすればよいですか?

テンプレートファイルには、<Faults></Faults>タグが含まれています。これで、このノードの内部に改行を挿入したいと思います。

C++ CODE:

_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> 

方法メモ帳で開くときに最終出力ファイルがフォーマットされるように各ノードに改行を追加できますか?

答えて

1

ファイルに保存する前に、いくつかの書式設定オプションを設定する必要があります。あなたの特定のケースで

FormatXMLData()機能で

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

ありがとうございました。挿入して読み込む前に追加する必要があります。 –

0

ルック:それは読みやすくなるように、

は、XMLの文字列をフォーマットします。

FormatXMLDataを使用すると、XMLの文字列をその構造を表す形式に変換できます。 FormatXMLDataは入力文字列(XMLData)を変更して、各要素ノードが独自の行に表示されるようにし、ノード階層内のネスティングを反映するように適切に字下げします。

+0

Remy Leeauさん、ありがとうございました。私はオプション<< doNodeAutoIndentを使用しました。 –

関連する問題