我在这个问题上发现了很多很棒的问题。不幸的是,答案都说使用xsd文件。我使用xsd.exe从xml文件创建了一个xsd文件。我从here复制代码并粘贴到Visual Studio中,我在第一行收到错误。
不想花时间弄清楚为什么它不能运行我决定自己编写验证代码。
以下是我使用的两点:
每个左侧插入符都有一个正确的插入符号,因此在文件末尾它们将是等量的左右插入符号。
在文件的末尾,如果我要么占用左侧插入符号,或者右侧插入符号从总数中减去一个(因为标题没有反斜杠)并将总数除以2 ,我得到了斜线的数量。
我遇到了一些问题。
我正在使用string.count()此方法还会计算属性中的插入符号(我不想要)。
我在读完文件后计算出预期的反斜杠数。如果数字不匹配,我写“预期的斜线数不匹配”但我不知道它在文件中的位置。
我想不出目前解决这些问题的方法。
有没有人有更好的方法来验证xml文件而不使用xsd文件?
答案 0 :(得分:7)
请注意,WELL FORMED XML与VALID XML不同。
遵循XML标准的XML被认为是良好的形式,而遵守DTD的XML被认为是有效的。
如果您只是想检查XML是否格式正确,请尝试:
try
{
var file = "Your xml path";
var settings = new XmlReaderSettings { DtdProcessing = DtdProcessing.Ignore, XmlResolver = null };
using (var reader = XmlReader.Create(new StreamReader(file), settings))
{
var document = new XmlDocument();
document.Load(reader);
}
}
catch (Exception exc)
{
//show the exception here
}
P.S:XML的良好格式始终是有效XML的先决条件。
希望它有所帮助!
答案 1 :(得分:1)
当你说“插入符号”时,我认为你一定是在谈论“<”和“>”符号,在XML世界中通常被称为“尖括号”。
当您谈到检查插入符号是否匹配时,您正在讨论该文件是否符合XML语法。这在XML世界中被称为“格式良好的检查”。验证是不同的,更深层次的。您需要一个模式(XSD模式或其他类型)进行验证,但是对于格式良好的检查,您只需要一个XML解析器。
不要试图自己实施格式良好的检查。 (a)因为它并不容易,(b)因为解析器很容易现成,而且(c)因为你显然对问题没有非常深入的了解。只需通过XML解析器运行您的文件,它就能为您完成工作。