コードサンプルは、あなたがやっていることを確認するのにはいいと思っていましたが、私は同じ場所にいるのでいくつかの仮定をすることができます。私はUsing XSDs with includesにやって来て、受け入れられた答えを私のために働かせました。
問題はXmlReader
がCreate()
がXmlReader
をINGの間、あなたはそれを指定しない場合、ベースパスが含まスキーマ何のためにあるのかを知っていないようだということです。 XMLファイルへのファイルパスがあると仮定すると、XmlReader.Create(Stream input, XmlReaderSettings settings, String baseUri)
を使用し、XMLファイルへのパスをbaseUri
として指定します。
例:
using System.IO;
using System.Xml;
using System.Xml.Schema;
public void LoadXml(string path) {
XmlDocument doc = new XmlDocument();
XmlReader docReader;
XmlReaderSettings rdrOpts = new XmlReaderSettings();
rdrOpts.ValidationType = ValidationType.Schema;
rdrOpts.ValidationFlags = XmlSchemaValidationFlags.ProcessSchemaLocation;
try {
// This line is what you're looking for:
docReader = XmlReader.Create(new FileStream(path, FileMode.Open, FileAccess.Read), rdrOpts, Path.GetDirectoryName(path));
doc.Load(docReader);
} catch (System.Xml.Schema.XmlSchemaValidationException ex) {
//...
} //and catch any other relevant exceptions here, like System.IO.FileNotFoundException
}
全体の例外は( 'ex.ToString()')何ですか?それはあなたに行番号と位置、そしておそらくファイル名を伝えるかもしれません。 –