毎度お世話になります。
こちらで改めて質問させてください。
XMLLiteで、サイトを参考にxml書き出し処理を作成しています。
if( FAILED(pWriter->WriteStartDocument(XmlStandalone_Omit)) )
{
_tprintf( _T("WriteStartDocument失敗") );
return false;
}
if( FAILED(pWriter->WriteStartElement(NULL, L"sample", NULL)) )
{
_tprintf( _T("WriteStartElement失敗") );
return false;
}
if( FAILED(pWriter->WriteStartElement(NULL, L"requirement", NULL)) )
{
_tprintf( _T("WriteStartElement失敗") );
return false;
}
if( FAILED(pWriter->WriteElementString(NULL, L"type", NULL, L"ヘッダ")) )
{
_tprintf( _T("WriteElementString失敗") );
return false;
}
if( FAILED(pWriter->WriteElementString(NULL, L"name", NULL, L"XmlLite.h")) )
{
_tprintf( _T("WriteElementString失敗") );
return false;
}
if( FAILED(pWriter->WriteFullEndElement()) )
{
_tprintf( _T("WriteFullElement失敗") );
return false;
}
if( FAILED(pWriter->WriteEndDocument()) )
{
_tprintf( _T("WriteEndDocument失敗") );
return false;
}
if( FAILED(pWriter->Flush()) )
{
_tprintf( _T("Flush失敗") );
return false;
}
これで、
<?xml version="1.0" encoding="UTF-8"?>
<sample>
<requirement>
<type>ヘッダ</type>
<name>XmlLite.h</name>
</requirement>
</sample>
こういう形のXMLを書けるのですが、pWriter->WriteFullEndElementとpWriter->WriteEndDocumentはどっちか一方がなくてもきちんと上記の形で出力されます。
両方要素を閉じる動きだという認識でいるのですが、どういう違いがあるのでしょうか?
pWriter->WriteEndDocumentはルートエレメントを閉じるためのもの、pWriter->WriteFullEndElementはルートエレメント以下のノードを閉じるためのもの、ということなのでしょうか?
どなたかご教授いただけるとありがたいです。
宜しくお願い致します。
ツイート | ![]() |