如何将某些类型的括号(整个文档中)中的所有数字替换为其值的一小部分?

时间:2012-05-04 17:35:35

标签: xml notepad++ xml-editor

我的问题是经过几天无用的搜索后我无法解决的问题。我对XML或任何其他类型的编程都很陌生,所以请原谅我解释的任何错误!

基本上,正如标题中所述,我需要替换括号内的所有数字

  

< Scale_Factor> < / Scale_Factor>

是他们原始价值的三分之一。在notepad ++,XML编辑器或您可能熟悉的任何其他程序中,我可以这样做吗? 真的有办法吗?非常感谢所有帮助! 数字的示例是3.0。我想将其更改为1.0。整个文件中的数字不尽相同。 XML版本1.0

2 个答案:

答案 0 :(得分:0)

匹配数字并不太难。您只需使用正则表达式搜索并执行以下操作:

\<Scale_Factor\>([A-Za-z\.\s]*)([d]+)([A-Za-z\.\s]*)\<\/Scale_Factor\>

匹配此正则表达式将允许您替换所有数字,如果您用这样的东西替换它: \ 1(取代nums的东西)\ 3

但是,你不能在替换语句中做数学运算,所以你在这里运气不好。您最好的选择是用迭代替换命令替换数字或编写自定义exe来为您完成。

答案 1 :(得分:0)

这是一个简单的问题,但如果您不知道如何编码,则很难做到。这是针对您的问题的最简单的解决方案。

创建一个名为divide.xsl的文件,并将以下数据放入其中:

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes" />
  <xsl:template match="node()|@*">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()" />
    </xsl:copy>
  </xsl:template>
  <xsl:template match="Scale_Factor">
    <xsl:copy>
      <xsl:value-of select="text() div 3" />
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>

使用Notepad ++,安装了xmltools插件。打开xml文件,转到Plugins >> XML Tools >> XSL Transformation并打开刚刚创建的divide.xsl。多田!

这个问题有很多解决方案。此解决方案通过XSLT和XPath完成。请查看thisthis了解详情。