我目前正在使用的软件遇到问题,该软件从外部软件接收我们确实需要处理的几个 Xml,现在我们的问题是这些 Xml 文件包含很多完全无用的节点和也因此使文件(xmls)非常重,结果程序运行速度非常慢以处理每个xmls,这应该在未来改变,我想证明通过删除这些节点我们会改进我们的处理时间很多,现在我想作为第一步手动执行此操作,使用示例 xml 并应用正则表达式语法来删除所有 value 属性为空的节点,这是我现在一直使用的语法记事本中的替换功能我可以删除这些行,然后删除空行:
<.*(\s\w+?[^=]*?="[^"]*?")*?\s+?value="[""]*?".*?>
例子
<TEST_NODE value="1"/>
<TEST_NODE value=""/>
<TEST_NODE value="0"/>
在我的例子中,节点可以有不同的命名并且可以有不同的属性,但是我应该关心的是那些在 value 属性中包含某些东西的节点,因此在这种情况下我应该删除第二行
这看起来工作正常,但是对于非常大的文件(10 mb),替换记事本++ 功能似乎有问题,并且它停止正常工作,破坏了很多标签......
我尝试使用另一个名为“Ultraedit”的软件,但我猜它的语法不同,因为我可以使用正则表达式但需要选择其中一个选项:Perl、Unix、Ultraedit;只使用“Perl”我可以做这个替换,但也有,对于大文件,这不起作用,我得到以下错误:
匹配表达式的复杂性已超出可用资源..
谁能帮我解决这个问题?不幸的是,我什至对正则表达式都不是很好,我不确定上面的代码是好是坏..