Xai*_*oft 1 regex linq linq-to-xml
我有以下查询:
Dim elementsWithPossibleCCNumbers As IEnumerable(Of XElement) =
xmlTree.Descendants().
Where(Function(element) element.Attributes().
Where(Function(attribute) attribute.Value.Length >= 13
AndAlso attribute.Value.Length <=
16).
Where(Function(attribute) Long.TryParse(attribute.Value, numeric)).Count() = 1).
[Select](Function(x) x)
Run Code Online (Sandbox Code Playgroud)
我最初是使用 Regex 搜索属性,但由于社区中的其他一些人告诉我这是更好的选择,我开始使用 LINQ to XML。我唯一担心的是,对于较大的 XML 字符串,LINQ to XML 查询的性能如何,它是否比 Regex 快?
我可以提高查询速度吗?
主要问题是 regexp 从根本上说是处理 XML 文件的错误工具。欺骗正则表达式返回错误的结果太容易了,例如通过添加一个CDATA部分。到目前为止,速度是次要的问题:甚至无法通过正则表达式判断 XML 是否格式正确,更不用说正确处理极端情况了。
现在回答您的问题,速度在很大程度上取决于您的正则表达式的结构。可以构建一个文件/正则表达式组合,其中正则表达式会更快,另一对文件/正则表达式,其中 LINQ2XML 路由会更快。但是 LINQ2XML 仍然相当快,而且很可能更正确。