【问题标题】:How to rename many xml files with certain element inside them?如何重命名其中包含某些元素的许多 xml 文件?
【发布时间】:2021-06-12 09:24:23
【问题描述】:

我在一个文件夹中有很多xml文件

我需要将它们重命名为 NENAME 元素中的任何内容 --> 4thBridge_KRK4063.xml ,这是文件中的部分,例如:

<class>
        <NE>
            <attributes>
                <LOCATION></LOCATION>
                <SWVERSION>BTS3900_5900 V100R015C10SPC210</SWVERSION>
                <USERLABEL></USERLABEL>
                <NERMVERSION>3900BTSDATAV100R015C10SPC210</NERMVERSION>
                <INTERFACEID>BTS3900 V100R015C10SPC210</INTERFACEID>
                <PRODUCTVERSION>BTS3900 V100R015C10SPC210</PRODUCTVERSION>
                <LMTVERSION>BTS3900 V100R015C10SPC210</LMTVERSION>
                <DID></DID>
                <SITENAME></SITENAME>
                <NENAME>4thBridge_KRK4063</NENAME>
                <HOTPATCHVERSION>BTS3900_5900 V100R015C10SPH213</HOTPATCHVERSION>
                <CLOUDBBID>0</CLOUDBBID>
            </attributes>
        </NE>
    </class>

我对编程了解不多,请多多指教。

【问题讨论】:

    标签: xml rename element


    【解决方案1】:

    您可以使用 XSLT 3.0 处理器(例如 Saxon)来做到这一点:

    <xsl:transform
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      version="3.0">
      <xsl:param name="inputDir"/>
      <xsl:template name="main">
        <xsl:for-each select="collection($inputDir || '?select=*.xml')">
          <xsl:result-document href="{//NENAME}.xml">
            <xsl:copy-of select="."/>
          </xsl:result-document>
        </xsl:for-each>
      </xsl:template>
    </xsl:transform>
    

    【讨论】:

    • 谢谢大佬,我下载了 saxon HE/saxon 资源,但是有点迷茫,哪里可以输入这个代码?
    • 如果您从命令行运行,请使用类似java net.sf.saxon.Transform -xsl:style.xsl -it:main inputDir=myInputDir 的命令,其中 style.xsl 包含上面的样式表代码,myInputDir 是包含输入文件的目录。但是,如果您不习惯使用命令行,您可能更愿意下载一个 GUI 工具,例如 Oxygen IDE。恐怕无论您采取何种方法,当您开始使用新工具时,都会有一个学习曲线(以及需要阅读的大量文档)。
    • 好答案,我这边+1!
    猜你喜欢
    • 1970-01-01
    • 2021-03-21
    • 2020-09-27
    • 2012-06-21
    • 2017-12-26
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多