2

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

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

< Scale_Factor > </Scale_Factor >

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

4

2 回答 2

0

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

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

如果您将其替换为以下内容,则匹配此正则表达式将允许您替换所有数字:\1(替换数字的东西)\3

但是,您不能在替换语句中进行数学运算,因此您在这里不走运。你最好的选择是用迭代替换命令替换数字或编写一个自定义 exe 来为你做。

于 2012-05-07T22:51:20.943 回答
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 完成的。查看以获取更多信息。

于 2012-05-07T23:31:27.617 回答