XMLReader と XMLWriter を使用して XML を読み書きするプログラムがあります。
XmlWriter writer =
XmlWriter.Create(fullpath, settings);
//content...
writer.Flush();
writer.Close();
そして私のリーダーコード
XmlReader reader = XmlReader.Create(fullpath);
while (reader.Read())
{
switch(reader.NodeType)
{
case XmlNodeType.Element:
Console.WriteLine("Element: " + reader.Name);
while(reader.MoveToNextAttribute())
{
Console.WriteLine("\tAttribute: [" + reader.Name + "] = '" +
reader.Value + "'");
}
break;
case XmlNodeType.DocumentType:
Console.WriteLine("Document: " + reader.Value);
break;
case XmlNodeType.Comment:
Console.WriteLine("comment: " + reader.Value);
break;
default:
Console.WriteLine("unknown type, error!");
break;
}
}
reader.Close()
ライターは正常に動作しますが、XmlReader に到達すると、 reader = XmlReader.Create(fullpath); になります。
不明なタイプのエラー メッセージを 2 回出力し、エラーでクラッシュします
未処理の例外: System.Xml.XmlException: セキュリティ上の理由から、この XML ドキュメントでは DTD は禁止されています。DTD 処理を有効にするには、XmlReaderSettings の ProhibitDtd プロパティを false に設定し、その設定を XmlReader.Create メソッドに渡します。System.Xml.XmlTextReaderImpl.Throw(Exception e) で System.Xml.XmlTextReaderImpl.ThrowWithoutLineInfo(String res, String arg) で System.Xml.XmlTextReaderImpl.ParseDoctypeDecl() で System.Xml.XmlTextReaderImpl.ParseDocumentContent() で System. C:\Main\C#June\CH9\CodeFile1.cs:line の writefile.Main() での Xml.XmlTextReaderImpl.Read()
XmlReader.Create(fullpath) の前にこれを追加してみました
XmlReaderSettings settingsread = new XmlReaderSettings();
settingsread.ProhibitDtd = false;
それでも同じエラーが発生します。このプログラムの本当の問題は何ですか?