Sar*_*ien 1 c# xml validation dtd
我只想查看 xml 是否对 dtd 有效,如果无效则打印错误消息。我写了这个验证器。问题是它总是打印该文档是有效的,即使它是无效的。感谢帮助。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using System.Xml.Schema;
namespace XMLValidator
{
class Program
{
static void Main()
{
var messages = new StringBuilder();
var settings = new XmlReaderSettings { ValidationType = ValidationType.DTD };
settings.ValidationEventHandler += (sender, args) => messages.AppendLine(args.Message);
var reader = XmlReader.Create("file.xml", settings);
if (messages.Length > 0)
{
Console.WriteLine("Document is not valid!");
}
else
Console.WriteLine("Document is valid!");
}
}
}
Run Code Online (Sandbox Code Playgroud)
您还需要启用 DTD 处理
var settings = new XmlReaderSettings { ValidationType = ValidationType.DTD, DtdProcessing = DtdProcessing.Parse };
Run Code Online (Sandbox Code Playgroud)
当然,您需要使用例如解析文件
while (reader.Read()) {}
Run Code Online (Sandbox Code Playgroud)
此外,如果 DTD 在外部文件中,则还要设置
var settings = new XmlReaderSettings { ValidationType = ValidationType.DTD, DtdProcessing = DtdProcessing.Parse, XmlResolver = new XmlUrlResolver() };
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2526 次 |
| 最近记录: |