XDocument.Parse成功还是失败?

Flo*_*ind 15 c# linq

我在用

XDocument doc = XDocument.Parse(somestring);
Run Code Online (Sandbox Code Playgroud)

但是,如何验证字符串somestring是否是格式良好的XML.这Try Catch是唯一的方法吗?

Hab*_*bib 15

Try Catch是唯一可以做到这一点的方法吗?

没有TryParse方法XDocument,所以try-catch可能是最好的选择.还要考虑针对模式验证XML,因为它不仅会检查XML是否格式正确,还会检查约束.

您可能会看到:使用XmlValidatingReader验证XML Schema(XSD)


Jus*_*rei 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;
}
Run Code Online (Sandbox Code Playgroud)

这样您就不会为XDocument DOM花费内存.BTW,XDocument.Parse()使用XmlReader处理XML,因此如果需要分析它们,则异常是相同的.