0

XmlLiteReader の例のコードを使用して、単純な XML ファイルを解析するために Microsoft の XmlLite DLL を使用しています。コード (C++) の本質的な部分は

    while(S_OK == (hr = pReader->Read(&nodeType)))
    {
        switch(nodeType)
        {
        case XmlNodeType_Element:
            // Get name...
            WriteAttributes(pReader, es, attributes);
            break;
        case XmlNodeType_EndElement:
            // Process end-of-element...
            break;
    }

HRESULT WriteAttributes(IXmlReader* pReader, CString& es, StringStringMap& attributes)
{
    while(TRUE)
    {
        // Get and store an attribute...
        HRESULT hrMove = pReader->MoveToNextAttribute();
    }
    // ...
}

それで、ここに私の質問があります。次のような XML 入力で

<?xml version="1.0" encoding="utf-8"?>
<settings version="1.2">
 <runID name="test" mode="N" take_data="Y">
  <cell id="01">
   <channel id="A" sample="something"/>
   <channel id="B" sample="something else"/>
  </cell>
  <cell id="03">
   <channel id="A" sample="other something"/>
   <channel id="B" sample="other something else"/>
  </cell>
 </runID>
</settings>

要素の終わりを示す各行の末尾の が要素の終わりとして認識されないことを除いて、すべてが期待どおりに機能します。次の連続するノード タイプは、空白 (\n)、次に要素 (2 番目の) です。/>channelchannelchannelchannel

要素「チャネル」が終了したことを XmlLite から判断するにはどうすればよいですか? または、XML 構文を誤解していますか?

4

1 に答える 1

1

/>関数IsElementEmptyを使用して、要素が で終わるかどうかをテストできます。

于 2015-06-19T14:26:54.043 に答える