首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用BeyondCompare的XML比较排除规则

使用BeyondCompare的XML比较排除规则
EN

Stack Overflow用户
提问于 2013-03-19 21:43:51
回答 1查看 769关注 0票数 1

在比较xml文件时,我需要添加一个不可比较的规则。我需要忽略以单词exclude="true"开头,以单词</File>结尾的节点。

代码语言:javascript
复制
  <File name="LogData.txt" exclude="true" type="TIMESTAMP">
   <Date>2012-09-27 17:43:36.211</Date>
  </File>

我已经为我的示例实例创建了如下规则:

开头:<File name="LogData.txt" exclude="true"以:</File>结尾

但是我需要一些更通用的东西,可以忽略包含exclude="true“属性的任何文件节点。

EN

回答 1

Stack Overflow用户

发布于 2016-03-26 11:29:51

你的解决方案是什么?您是否尝试使用这样的正则表达式:

表达式<File (.*)exclude="true"中的文本具有尽可能频繁地表示任何字符的.*

另一种解决方案是使用外部转换。

我写了这样的小红宝石剧本:

代码语言:javascript
复制
File.open(ARGV.last, "w"){|f|
  f.write(File.read( ARGV.first).gsub( %r{<(.+?)\s[^>]+exclude="true".*?>(.*?)</\1>}m, ""))
}

它将第一个参数作为源文件名,并将转换后的xml写入目标文件。

此脚本可用作转换工具:

这一比较:

变成了

与脚本不同,我也成功地使用了一个班轮

红宝石-e“File.open(‘’%t‘,’w‘’){\x{e}(File.read(‘%s’).gsub(/]+exclude=.true..?>(.)/m‘’)}

如果您将脚本改编为

代码语言:javascript
复制
File.open(ARGV.last, "w"){|f|
  f.write(File.read( ARGV.first).gsub( %r{(<(.+?)\s[^>]+exclude="true".*?>(.*?)</\2>)}m, "<!--\n\\1\n-->"))
}

排除的部分不会被移除,而是设置为注释(<!-- ... -->),您将得到:

这种差异现在是一个无关紧要的差异(蓝色而不是红色),您可以忽略这个差异。

注:*如果你想使用我的脚本,你需要红宝石。*如果需要,可以用另一种语言编写转换脚本。*我使用的正则表达式没有经过很好的测试。嵌套标记可能出错。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15511054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档