我正在使用
XDocument doc = XDocument.Parse(somestring);
但是如何验证字符串somestring
是否是格式良好的XML。 Try Catch
是唯一可以做到这一点的方法吗?
答案 0 :(得分:14)
Try Catch是唯一可以做到这一点的方法吗?
TryParse
没有XDocument
方法,因此try-catch
可能是最好的选择。还要考虑针对模式验证XML,因为它不仅会检查XML是否格式正确,还会检查约束。
您可能会看到:Validation Against XML Schema (XSD) with the XmlValidatingReader
答案 1 :(得分:6)
如果您只需要检查文档是否格式正确,最快的方法是使用XmlReader,如下所示:
var isWellFormedXml = true;
try
{
using (var reader = XmlReader.Create(stream)) // can be a mem stream for string validation
{
while (reader.Read()) {}
}
}
catch
{
isWellFormedXml = false;
}
这样您就不会为XDocument DOM花费内存。 BTW,XDocument.Parse()使用XmlReader处理XML,因此如果需要分析它们,则异常是相同的。