我有以下查询:
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)
我最初使用Regex搜索属性,但我开始使用LINQ to XML,因为社区中的其他人告诉我这是更好的路线。我唯一担心的是,对于更大的XML字符串,LINQ to XML查询的性能如何,还是比Regex快?
我可以提高查询速度吗?
答案 0 :(得分:4)
主要关注的是regexp从根本上说是处理XML文件的错误工具。将正则表达式转换为向您返回错误结果非常容易,例如添加CDATA
部分。到目前为止速度是次要问题:甚至无法判断XML是否与正则表达式结合良好,更不用说正确处理极端情况了。
现在回答你的问题,速度很大程度上取决于正则表达式的结构。可以构造一个文件/正则表达式组合,其中regexp会更快,另一对文件/ regexp,其中LINQ2XML路由会更快。但LINQ2XML仍然会相当快,而且很可能更正确。