XMLLite(書き出し時)について


超初心者  2009-09-17 01:44:43  No: 70943

毎度お世話になります。

こちらで改めて質問させてください。

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はルートエレメント以下のノードを閉じるためのもの、ということなのでしょうか?

どなたかご教授いただけるとありがたいです。

宜しくお願い致します。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加