我的问题是经过几天徒劳的搜索后我无法解决的问题。我对 XML 或任何其他类型的编程都很陌生,所以请原谅我解释的任何错误!
本质上,正如标题中所说,我需要替换括号内的所有数字
< Scale_Factor > </Scale_Factor >
是其原始价值的三分之一。在 notepad++、XML 编辑器或您可能熟悉的任何其他程序中,我如何做到这一点?真的有办法吗?非常感谢所有帮助!数字的示例是 3.0。我想将其更改为 1.0。整个文档中的数字各不相同。XML 版本 1.0
我的问题是经过几天徒劳的搜索后我无法解决的问题。我对 XML 或任何其他类型的编程都很陌生,所以请原谅我解释的任何错误!
本质上,正如标题中所说,我需要替换括号内的所有数字
< Scale_Factor > </Scale_Factor >
是其原始价值的三分之一。在 notepad++、XML 编辑器或您可能熟悉的任何其他程序中,我如何做到这一点?真的有办法吗?非常感谢所有帮助!数字的示例是 3.0。我想将其更改为 1.0。整个文档中的数字各不相同。XML 版本 1.0
匹配数字并不难。您只需要使用正则表达式搜索并执行以下操作:
\<Scale_Factor\>([A-Za-z\.\s]*)([d]+)([A-Za-z\.\s]*)\<\/Scale_Factor\>
如果您将其替换为以下内容,则匹配此正则表达式将允许您替换所有数字:\1(替换数字的东西)\3
但是,您不能在替换语句中进行数学运算,因此您在这里不走运。你最好的选择是用迭代替换命令替换数字或编写一个自定义 exe 来为你做。
这是一个简单的问题,但如果您不知道如何编码,则很难做到。这是针对您的问题的最简单的解决方案。
创建一个名为 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。多田!