クラスメンバーからXMLファイルを生成するC++アプリケーションを作成しました。今度は、生成されたファイルを再度読み込み、すべての属性と値をC++クラスに保存し直したいと思います。XmlReader :: ReadStartElementを呼び出すときにInvalidOperationExceptionがスローされる
私のXMLライター(成功と書き込み):
void TDescription::WriteXml(XmlWriter^ writer)
{
writer->WriteStartElement("Description");
writer->WriteAttributeString("Version", m_sVersion);
writer->WriteAttributeString("Author", m_sAuthor);
writer->WriteString(m_sDescription);
writer->WriteEndElement();
}
マイXMLリーダー(例外が発生します):
void TDescription::ReadXml(XmlReader^ reader)
{
reader->ReadStartElement("Description");
m_sVersion = reader->GetAttribute("Version");
m_sAuthor = reader->GetAttribute("Author");
m_sDescription = reader->ReadString();
reader->ReadEndElement();
}
マイ生成されたXMLファイル:
<?xml version="1.0" encoding="utf-8"?>
<root Name="database" Purpose="try" Project="test">
<!--Test Database-->
<Description Version="1.1B" Author="it">primary</Description>
</root>
がここにありますリーダによる例外:
An unhandled exception of type 'System.InvalidOperationException' occurred in System.Xml.dll
Additional information: There is an error in XML document (2, 2).
コードの問題点は何ですか?私はXmlReader
メソッドは正しい方法で使用されていないと思う! 1を答えることにより
reader->ReadStartElement("root");
reader->ReadStartElement("Description");
m_sVersion = reader->GetAttribute("Version");
m_sAuthor = reader->GetAttribute("Author");
m_sDescription = reader->ReadString();
reader->ReadEndElement();
reader->ReadEndElement();
は今、私は例外を取得しないとm_sDescription
は右の値を取得しますが、m_sVersion
とm_sAuthor
はまだ空です。
実際の例外がスローさが役立つかもしれない... – crashmstr