我有大约200个xml文件,其中我需要将特定Attibutes的值翻两番。它们太多了,不能手工完成,所以我需要一个脚本。我该怎么做?
我尝试用BATch文件做到这一点,但我没有设法做到这一点,我能够替换字符串等,但我如何在xml文档中获取属性的确切值?
有人可以帮助我吗?
XML文件看起来像这样:
<AnimatedActor>
<Content>
<Spritesheets>
<Spritesheet Path="MenuShadow.png" Id="0" />
</Spritesheets>
<Layers>
<Layer Name="Main" Id="0" SpritesheetId="0" />
</Layers>
<Nulls />
<Events />
</Content>
<Animations DefaultAnimation="Idle">
<Animation Name="Idle" FrameNum="1" Loop="False">
<RootAnimation>
<Frame XPosition="0" YPosition="0" Delay="1" Visible="True" XScale="100" YScale="100" RedTint="255" GreenTint="255" BlueTint="255" AlphaTint="255" RedOffset="0" GreenOffset="0" BlueOffset="0" Rotation="0" Interpolated="False" />
</RootAnimation>
<LayerAnimations>
<LayerAnimation LayerId="0" Visible="True">
<Frame XPosition="0" YPosition="0" XPivot="0" YPivot="0" Width="256" Height="149" XScale="100" YScale="100" Delay="1" Visible="True" XCrop="0" YCrop="0" RedTint="255" GreenTint="255" BlueTint="255" AlphaTint="255" RedOffset="0" GreenOffset="0" BlueOffset="0" Rotation="0" Interpolated="False" />
</LayerAnimation>
</LayerAnimations>
<NullAnimations />
<Triggers />
</Animation>
</Animations>
</AnimatedActor>
问候 - Manu
答案 0 :(得分:1)
使用此内容创建xslt文件
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<!--Identity template that will copy every
attribute, element, comment, and processing instruction
to the output-->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<!-- replace this with whatever nodes you want to target-->
<xsl:template match="Frame/@YScale">
<xsl:attribute name="YScale"><xsl:value-of select=". *4"/></xsl:attribute>
</xsl:template>
您可以使用命令行中的Xalan来使用此转换来定位文件 (https://xml.apache.org/xalan-j/commandline.html)
e.g。 java org.apache.xalan.xslt.Process -IN yourxml.xml -XSL NewTransform.xsl -OUT modifiedfile.xml
您可以使用批处理文件遍历目标目录中的所有xml文件,并以这种方式进行转换。