多个XML文件中的一些值

时间:2015-09-24 15:01:41

标签: xml

我有大约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

1 个答案:

答案 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文件,并以这种方式进行转换。