首先,我知道这是一个糟糕的解决方案,我不应该这样做。
背景:随意跳过
但是,我需要一个实时系统的快速修复。我们目前有一个数据结构,通过一系列的字符串构建器创建“xml”片段,将自身序列化为字符串。我怀疑这是否是有效的XML。在创建了这个XML之后,在通过消息队列发送它之前,一些清理代码会在字符串中搜索出现的XML声明并将其删除。
这样做的方式(迭代为
<?xml
)它的速度太慢,导致线程超时和系统崩溃。最终,我将尝试正确地修复这个问题(使用XML文档或类似的东西构建XML),但今天我需要一个快速的修复来替换现有的问题。
请记住,我知道这远远不是一个理想的解决方案,但我需要一个快速的解决方案来让我们重新启动和运行。
问题
我想用正则表达式来查找声明。我计划:
<\?xml.*?>
然后使用
Regex.Replace(input, string.empty)
除去。
你能告诉我这个regex是否有任何明显的问题,或者是否只是用代码编写它
string.IndexOf("<?xml")
和
string.IndexOf("?>")
在一个(更理智的)循环中配对更好。
编辑
我需要处理新品。
威尔:
<\?xml[^>]*?>
耍把戏吗?
干杯!
编辑2
谢谢你的帮助。正则表达式
<\?xml.*?\?>
工作很好。最后我编写了一些计时代码,并使用ar egex测试了这两种方法,以及
IndexOf()
. 我发现,对于我们最简单的用例,声明剥离只需要:
-
差不多一秒钟
-
0.01秒
-
无法通过循环和
索引()
所以我去了
索引()
因为很简单,一个非常简单的循环。
干杯。