19

我在用

XDocument doc = XDocument.Parse(somestring);

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

4

2 回答 2

19

Try Catch 是唯一的方法吗?

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

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

于 2013-10-22T17:29:28.610 回答
7

如果只需要检查文档是否格式正确,最快的方法是使用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 花费内存。顺便说一句,XDocument.Parse() 使用 XmlReader 来处理 XML,所以异常是相同的,如果您需要分析它们。

于 2013-10-22T17:51:39.930 回答