私は実行時に読み込んだxmlファイルを持っていますが、実行時にxmlをxsdファイルに対して検証することは可能ですか? C#の実行時にコードを使用してxsdに対してxmlを検証できますか?
答えて
ことは、これを試してみてください:
public void ValidateXmlDocument(
XmlReader documentToValidate, string schemaPath)
{
XmlSchema schema;
using (var schemaReader = XmlReader.Create(schemaPath))
{
schema = XmlSchema.Read(schemaReader, ValidationEventHandler);
}
var schemas = new XmlSchemaSet();
schemas.Add(schema);
var settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.Schemas = schemas;
settings.ValidationFlags =
XmlSchemaValidationFlags.ProcessIdentityConstraints |
XmlSchemaValidationFlags.ReportValidationWarnings;
settings.ValidationEventHandler += ValidationEventHandler;
using (var validationReader = XmlReader.Create(documentToValidate, settings))
{
while (validationReader.Read())
{
}
}
}
private static void ValidationEventHandler(
object sender, ValidationEventArgs args)
{
if (args.Severity == XmlSeverityType.Error)
{
throw args.Exception;
}
Debug.WriteLine(args.Message);
}
希望を使用して、このリンクが役立ちます:
リンクがまともに見えますが、私は例が廃止されXmlValidatingReaderをし、使用しているに気づきました。ビヘイビアを定義するいくつかの検証プロパティを含むXmlReaderとXmlReaderSettingsを参照してください。 – STW
私はCODE TOOです!私は私のテストでこれを使用します。
public static bool IsValid(XElement element, params string[] schemas)
{
XmlSchemaSet xsd = new XmlSchemaSet();
XmlReader xr = null;
foreach (string s in schemas)
{ // eh, leak 'em.
xr = XmlReader.Create(
new MemoryStream(Encoding.Default.GetBytes(s)));
xsd.Add(null, xr);
}
XDocument doc = new XDocument(element);
var errored = false;
doc.Validate(xsd, (o, e) => errored = true);
if (errored)
return false;
// If this doesn't fail, there's an issue with the XSD.
XNamespace xn = XNamespace.Get(
element.GetDefaultNamespace().NamespaceName);
XElement fail = new XElement(xn + "omgwtflolj/k");
fail.SetAttributeValue("xmlns", xn.NamespaceName);
doc = new XDocument(fail);
var fired = false;
doc.Validate(xsd, (o, e) => fired = true);
return fired;
}
この1つは、文字列(アセンブリ内のファイルリソース)としてのスキーマに取り、スキーマセットに追加します。私は妥当性を検証し、有効でない場合は偽を返します。
xmlが無効であることが判明しない場合、私はスキーマが不正になっていないことを確認するために否定的なチェックを行います。その保証は保証されていませんが、私はこれを使用して私のスキーマでエラーを見つけました。
'XmlSchema.Read'メソッドは、解析中にスキーマを検証できるので、このメソッドを試してみてください。 –
ありがとうコード:) – BigOmar
簡単な解決策..
try
{
XmlReaderSettings Xsettings = new XmlReaderSettings();
Xsettings.Schemas.Add(null, "personDivideSchema.xsd");
Xsettings.ValidationType = ValidationType.Schema;
XmlDocument document = new XmlDocument();
document.Load("person.xml");
XmlReader reader = XmlReader.Create(new StringReader(document.InnerXml), Xsettings);
while (reader.Read());
}
catch (Exception e)
{
Console.WriteLine(e.Message.ToString());
}
- 1. xsdファイルに対してjaxbを使用してxmlを検証しました
- 2. vs 2010のxmlに対してxsdを検証できますか?
- 3. 1つのメソッドでXSDに対してXMLを検証する
- 4. xsdスキーマに対してbig xmlを検証する方法は?
- 5. 特定のXSDスキーマに対してXMLを検証する
- 6. JS/jQueryを使ってxsdに対してxmlを検証する
- 7. メモ帳++を使ってXSDに対してXMLを検証する
- 8. インポートしたXSDに対して検証できません
- 9. XSDに対してXMLを検証中にエラーが発生しました
- 10. LINQを使用してXSDでXMLを検証する方法
- 11. XSDを使用したXML検証
- 12. XSDスキーマを使用したXml検証
- 13. XMLスキーマに対してXPath式を検証できますか?
- 14. スキーマに対するXML(.xsd)フィード検証
- 15. OpenID URIに対して検証を実行しますか?
- 16. JavaでXSDに対してXMLを検証する/ schemaLocationを保持する
- 17. Saxon Home Edition(HE)を使用してXSDに対してXMLを検証する方法9.4
- 18. クラスパスからのXSDに対してSpring XMLスキーマを検証する
- 19. Jaxb2Marshallerを使用してXMLをアンマーシャリングし、スキーマに対して検証する
- 20. VB.NETはXSDファイルに対してXMLファイルを検証し、xmlを解析します
- 21. XSDを使用してXSDスキーマを検証する
- 22. Xercesを使用してAndroidのスキーマに対してXMLを検証する
- 23. JavaでXMLを使用してXSDを検証するためのフレームワーク
- 24. C#でxsdを使用してxmlファイルを検証します。実際にどのくらい検証されますか?
- 25. DataSet.ReadXML()はDTDに対してXMLを検証します
- 26. C#でSchematron/XSDを使用したXML検証
- 27. .NETで、XSDに対して検証するとXMLブロブ全体がメモリに入りますか?
- 28. XSDファイルに対してXML文字列を検証するにはどうすればよいですか?
- 29. XSDに対するXMLの順序を検証するフレームワーク
- 30. DataSetからxsdを使用してXML検証で欠落している要素をキャッチする方法
これは一番速いものです。 –