2013-10-30 44 views
0

我有一个XSL文件,它充当我的应用程序的配置文件。实际上它是一个XML文件,它包含了它的元素。此文件被称为Config.xsl:使用蚂蚁更新xml元素

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"   xmlns="http://www.example.org/Config"> 
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"    standalone="yes" /> 
<xsl:template match="/"> 
<Config> 
     <Test>somevalue</Test> 
     <Test1>someothervalue</Test1> 
</Config> 
</xsl:template> 

我想改变元件的Test1的一个NEWVALUE值。

下面是我的蚂蚁代码,我正在使用它来更新值。

<?xml version="1.0" encoding="UTF-8" ?> 
<project name="Scripts" default="test"> 
<taskdef resource="net/sf/antcontrib/antcontrib.properties" /> 
<taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask"/> 
<target name="test"> 
    <xmltask source="Config.xsl" dest="Config.xsl"> 
     <replace path="Config/Test1/text()" withText="newvalue" /> 
    </xmltask> 
</target> 
</project> 

如果有人能让我知道如何得到这份工作,我将不胜感激。

回答

2

看来你对命名空间感到困惑。在更换任何东西之前您必须处理它。有关XML Task如何处理它的更多细节转到https://today.java.net/pub/a/today/2006/11/01/xml-manipulation-using-xmltask.html#paths-and-namespaces。但是,您可以使用此代码来获得我们所需的输出:

输入:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns="http://www.example.org/Config"> 
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" standalone="yes"/> 
    <xsl:template match="/"> 
    <Config> 
     <Test>somevalue</Test> 
     <Test1>someothervalue</Test1> 
    </Config> 
    </xsl:template> 
</xsl:stylesheet> 

Ant脚本:

<project name="XML-VALIDATION" default="main" basedir="."> 
    <taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask"/> 
    <target name="main"> 
    <xmltask source="config.xsl" dest="output.xml"> 
     <replace path="//:Config/:Test1/text()">xxxxxxx</replace> 
    </xmltask> 
    </target> 
</project> 

输出:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.example.org/Config" version="1.0"> 
    <xsl:output encoding="UTF-8" indent="yes" method="xml" standalone="yes" version="1.0"/> 
    <xsl:template match="/"> 
    <Config> 
     <Test>somevalue</Test> 
     <Test1>xxxxxxx</Test1> 
    </Config> 
    </xsl:template> 
</xsl:stylesheet> 
+0

谢谢纳文。这就像一个魅力。此外,我正在尝试更新相同的文件,以便我的源代码和席位都是XSL文件,并且可以正常工作。 – Santosh