XDocument.Parse成功还是失败?

时间:2013-10-22 17:23:35

标签: c# linq

我正在使用

XDocument doc = XDocument.Parse(somestring);

但是如何验证字符串somestring是否是格式良好的XML。 Try Catch是唯一可以做到这一点的方法吗?

2 个答案:

答案 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,因此如果需要分析它们,则异常是相同的。