Java 使用XSLT更改XML值

Java 使用XSLT更改XML值,java,xslt,Java,Xslt,我有: 它将启动一个XSL代码: 但是当我启动我的程序时,我得到一个错误,它说XSLT代码不正确我认为您需要全局参数,假设您想在运行转换之前将它们设置为值,然后当然您只需要将参数值放入要用XSLT操作的元素中: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes"/> <xs

我有:

它将启动一个XSL代码:


但是当我启动我的程序时,我得到一个错误,它说XSLT代码不正确

我认为您需要全局参数,假设您想在运行转换之前将它们设置为值,然后当然您只需要将参数值放入要用XSLT操作的元素中:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:output method="xml" indent="yes"/>

  <xsl:param name="strArtifactID"/>
  <xsl:param name="iVersion"/>

  <xsl:template match="@* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="artifactId">
    <xsl:copy>
      <xsl:value-of select="$strArtifactID"/>
    </xsl:copy>

  </xsl:template>

  <xsl:template match="version">
    <xsl:copy>
      <xsl:value-of select="$iVersion"/>
    </xsl:copy>
  </xsl:template>

</xsl:stylesheet>

现在,您可以设置参数和名为artifactId的元素,注意拼写差异,版本将由传入的参数值填充。

不知道这是否是问题所在,但您的XSLTThanks中错误地拼写了$strArtifactID,但它没有解决问题您的问题到底是什么?您的xslt转换是否失败,或者您不知道如何获得所需的xml输出?请附上错误消息。@Mr.White是的,这是我的xslt转换失败,没有任何更改。谢谢,您的代码看起来非常正确,但我的输出中仍有任何修改。我显示了代码的xslt部分,当然,您需要修改Java代码,因为它没有设置任何参数,所以请确保在调用transform方法之前在Java调用中执行transformer.setParameterstrArtifactID、strArtifactID。完成,但没有任何更改…我不应该使用替换方法吗?比如:代替
<parent>
    <groupId>com.test.example</groupId>
    <artifactId>parameter1</artifactId>
    <version>parameter2</version>
</parent>
    private void btnModifyActionPerformed(ActionEvent e) {
    String strArtifactID = txtArtifactID.toString();
    int iVersion = new Integer(txtVersion.getText());


    Source xmlInput = new StreamSource(new File("c:/Users/balestrierih/Desktop/pomReplace.xml"));
    Source xsl = new StreamSource(new File("c:/Users/balestrierih/Desktop/pomReplace.xsl"));
    Result xmlOutput = new StreamResult(new File("c:/Users/balestrierih/Desktop/output.xml"));

    try {
        Transformer transformer = TransformerFactory.newInstance().newTransformer(xsl);
        transformer.transform(xmlInput, xmlOutput);
    } catch (TransformerException TE) {
        TE.getMessage();
    }

}
    <xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="xml" indent="yes"/>

 <xsl:template match="artifactID">
        <xsl:param name="strArtifactID"/>
        <xsl:apply-templates select="($strArtificatID)"/>
 </xsl:template>

 <xsl:template match="version">
        <xsl:param name="iVersion"/>
        <xsl:apply-templates select="($iVersion)"/>
</xsl:template>
</xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:output method="xml" indent="yes"/>

  <xsl:param name="strArtifactID"/>
  <xsl:param name="iVersion"/>

  <xsl:template match="@* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="artifactId">
    <xsl:copy>
      <xsl:value-of select="$strArtifactID"/>
    </xsl:copy>

  </xsl:template>

  <xsl:template match="version">
    <xsl:copy>
      <xsl:value-of select="$iVersion"/>
    </xsl:copy>
  </xsl:template>

</xsl:stylesheet>