Runtime: 将 TryParse 添加到 XDocument

创建于 2016-06-15  ·  3评论  ·  资料来源: dotnet/runtime

嗨,这是一个请求支持向XDocument类添加bool TryParse(string text, out XDocument document)方法的 RFC 问题。

我已经搜索了 repo,但找不到任何相关的东西,所以如果这是一个骗局,请随时关闭。

问题:

有时您必须使用来自_untrusted_ 源的 XML 文件,并且您必须确保该文件实际上是格式正确的 XML。

目前有一些不太好的方法来验证字符串是否是格式良好的 XML,其中涉及异常处理。

没有一个建议的方法看起来像一个非常常见的问题(至少 IMO)的干净解决方案。

另请注意,公开Parse(string source)方法的其他BCL 类通常也公开bool TryParse(string source, out...)因此添加TryParse方法将使XDocument类与其他 BCL 类。

建议:

添加以下方法

bool TryParse(string text, out XDocument document)

XDocumentXElement

问题:

我们是否需要XmlDocument类的功能对等?
实际上XmlDocument暴露了一个LoadXml(string xml)所以我们可以添加一个bool TryLoadXml(string xml, out XmlDocument document)但我真的不喜欢这个名字,因此如果功能奇偶校验不是必须的,我宁愿不要添加它。

area-System.Xml

最有用的评论

@weshaggard

除了方便之外, TryParse方法还允许开发人员跳过与 try / catch 块相关的开销以及实例化他/她甚至可能不关心的不需要的XmlException

我也很惊讶地发现不存在这样的方法。 :|

所有3条评论

我们对此进行了审查,并没有完全理解在这种情况下添加 TryParse 方法的价值。 虽然与其他 BCL 类型的一致性有点有趣,但它在这些情况下更有用,因为您可能会解析大量它们,因此存在性能问题。 在这种情况下,性能实际上不会成为问题,因为与解析整个 XML 文档的成本相比,异常成本很小。 此外,使用 Parse 方法,您将收到有关错误的 XmlException,它会提供额外的信息,指出您在 TryParse 情况下不会遇到的解析错误。

对于类似的情况,Roslyn API 也不提供解析 CS 文件的 TryParse 方法,因为您通常需要更多有关任何错误的上下文,但即使这样对于解析 XML 文档也可能是多余的,这就是为什么我们在Xml 异常。

感谢您提出问题并将其写出来,但由于这些原因,我们认为向这些添加 TryParse 方法没有多大价值。

@weshaggard

除了方便之外, TryParse方法还允许开发人员跳过与 try / catch 块相关的开销以及实例化他/她甚至可能不关心的不需要的XmlException

我也很惊讶地发现不存在这样的方法。 :|

对我个人而言, @weshaggard的答案是 0 有意义。 Imo 所有使用 .NET 超过半年的人都完全了解@weshaggard 帖子第一部分中的解释。 至少在过去的 20 年里,不处理也不关心错误的细节是使用 TryParse() 变体的主要原因,如果该类提供了一个变体。

我认为在过去的 X 年里,很多人已经来到这里,在查看了关于它的 stackoverflow 帖子之后,然后说“哦。XDocument 上真的没有 TryParse()。奇怪。”

但是无所谓。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

yahorsi picture yahorsi  ·  3评论

jamesqo picture jamesqo  ·  3评论

v0l picture v0l  ·  3评论

bencz picture bencz  ·  3评论

chunseoklee picture chunseoklee  ·  3评论