我希望用户能够将数据导出为 XML 文件。当然,我希望他们稍后能够导入相同的 XML 文件,但他们总是可以更改它,或者它可能是不同的 XML 文件。
所以我想验证 XML 文件以检查它是否采用我期望的格式。所以我想我需要像模式这样的东西来检查它是否必须通过代码。
所以如果我期望
<Root>
<Something>
<SomethingElse> </SomethingElse>
</Something>
</Root>
除了我期望的格式之外,我不希望文件中包含其他格式。
另外我将如何验证字段?就像我要求标签之间必须有一些文本一样。如果为空,则文件无效。
那么我该怎么做呢?
Edit
我决定使用 XML 序列化,因此我知道如果格式错误,它会抛出异常并忽略不起作用的内容。但是,我不确定是否应该通过它和 C# 来验证每条记录,还是应该尝试创建一个 xml 模式来执行此操作。
如果我想通过 xml 模式和 xml 序列化来完成它,那将如何工作?就像我首先做一些像我在回复中看到的事情然后将其反序列化吗?或者我该怎么做?
您可以使用以下代码片段来执行此操作:
using (FileStream stream = File.OpenRead(xsdFilepath))
{
XmlReaderSettings settings = new XmlReaderSettings();
XmlSchema schema = XmlSchema.Read(stream, OnXsdSyntaxError);
settings.ValidationType = ValidationType.Schema;
settings.Schemas.Add(schema);
settings.ValidationEventHandler += OnXmlSyntaxError;
using (XmlReader validator = XmlReader.Create(xmlPath, settings))
{
// Validate the entire xml file
while (validator.Read()) ;
}
}
当发生语法错误时,将调用 OnXmlSyntaxError 函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)