使用ruby解析xml的简单例子

在使用hudson持续集成的工作中,我们会在构建完成后运行一个自动部署脚本。
自动部署脚本需要知道构建的模块信息,用ruby解析pom.xml是比较合适的选择。

pom.xml:

<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <artifactId>sample</artifactId>
        <version>0.1.9-SNAPSHOT</version>
...
</project>

ruby脚本片段如下:

#!/usr/bin/env ruby

require "rexml/document"
doc = REXML::Document.new(File.open('pom.xml'))

artifactId = doc.elements["project/artifactId"].text
version = doc.elements["project/version"].text

上面的脚本,使用rexml模块解析xml。
注意:如果版本号是通过继承得来(或是在profile里指定的),先使用maven生成实际生效的pom.xml才能获得正确的结果。
Tips:使用mvn help:effective-pom生成实际生效的pom。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.