JAVA

用XMLTask操作XML Tips

简介


XMLTask是Ant外部任务,它提供了强大的XML编辑工具,主要用于在构建/部署过程中创建和修改XML文件。

与Ant的<replace>任务不同,XMLTask使用XPath提供识别XML文档各个部分的能力,并且还能在这些位置插入、删除和复制XML。用户可以使用XPath简单地识别XML元素或者用谓词(predicate)执行更复杂的逻辑(如“查找有‘Y’属性的名为‘X’的元素……”)。

官方网站:http://www.oopsconsultancy.com/software/xmltask/

可以从官网下载xmltask.jar, 官网上也有使用说明。

maven项目使用XMLTask例子


  • 把xmltask.jar放进工程里面
  • 通过maven-antrun-plugin插件来运行xmltask
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<artifactId>mybatis-generator</artifactId>
	<name>mybatis-generator</name>
	<description>Mybatis Code gen project for Spring Boot</description>
	<properties>
		<java.version>11</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
		</dependency>
		<dependency>
			<groupId>org.mybatis.generator</groupId>
			<artifactId>mybatis-generator-core</artifactId>
			<version>1.4.0</version>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-antrun-plugin</artifactId>
				<version>1.1</version>
				<executions>
					<execution>
						<phase>clean</phase>
						<goals>
							<goal>run</goal>
						</goals>
						<configuration>
							<tasks>
								<ant antfile="build.xml" target="main">
								</ant>
							</tasks>
						</configuration>
					</execution>
				</executions>
				<dependencies>
					<dependency>
						<groupId>oopsconsultancy</groupId>
						<artifactId>xmltask</artifactId>
						<version>1.16</version>
						<scope>system</scope>
						<systemPath>${basedir}/lib/xmltask.jar</systemPath>
					</dependency>
				</dependencies>
			</plugin>
		</plugins>
	</build>
</project>
  • Build.xml 都是xmltask的语法可以参考官网。
<project name="HelloWorld" default="run" basedir=".">
	<taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask"/>
	<target name="run">
	</target>
	<target name="main">
		<xmltask todir="${basedir}/source2">
			<fileset dir="${basedir}/source1/">	
			</fileset>
			<insert path="/mapper">
			<![CDATA[
			 <resultMap id="CommonResultMap"/>
			]]>
			</insert>
			<copy path="/mapper/resultMap[@id='BaseResultMap']/@type" attrValue="true" buffer="entityName"/>
			<attr path="/mapper/resultMap[@id='CommonResultMap']" attr="type" buffer="entityName"/>
			<insert path="/mapper/resultMap[@id='CommonResultMap']" position="under" buffer="stepBuffer2" />
			<copy path="/mapper/resultMap/result" buffer="stepBuffer1" append="true"/>
			<insert path="/mapper/resultMap[@id='CommonResultMap']" position="under" buffer="stepBuffer1" />
			<copy path="/mapper/resultMap/id" buffer="stepBuffer2" append="true"/>
		</xmltask>
	</target>
</project> 
  • mvn run

总结


XMLTask是比标准<replace>或文件创建任务强大得多的工具,使用它可以维护、创建和修改XML文件,同时还不必担心会使用XSLT。有许多XMLTask的功能这里没有介绍,关于它的更多信息和示例可以访问其主页(http://www.oopsconsultancy.com/software/xmltask