从脚本调整XML配置文件

时间:2008-11-25 07:41:21

标签: xml configuration scripting

我正在努力自动配置几个JBoss服务器,这涉及编辑大量的XML文件。

我想尽可能地编写所有这些更改的脚本。但是“标准”工具(sed,grep等)与XML不兼容。没有必要使用更高级别的语言,我如何编写脚本,例如在特定文件中的给定XML元素之后插入给定的XML snipper?

比如说我的jboss-log4j.xml看起来像

<!-- ====================== -->
<!-- More Appender examples -->
<!-- ====================== -->

<!-- Buffer events and log them asynchronously -->
<appender name="ASYNC" class="org.apache.log4j.AsyncAppender">
  <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
  <appender-ref ref="FILE"/>
  <!--
  <appender-ref ref="CONSOLE"/>
  <appender-ref ref="SMTP"/>
  -->
</appender>

并且我想添加一个新的appender-ref元素。从脚本中最简单的方法是什么?

3 个答案:

答案 0 :(得分:3)

您可以在previous question找到更多答案。 xmlstar似乎是最受欢迎的答案。

答案 1 :(得分:1)

通常我会通过编写XSL样式表并从脚本中调用SAXON来完成此操作。

答案 2 :(得分:0)

Ant的.NET表兄NAnt拥有XmlPeekXmlPoke个任务,这些任务在编辑非常复杂的WCF配置文件时非常有用。如果您可以为Ant找到类似的任务,那么您可能会有一个胜利者。

或者,另一种方法可能是配置文件的“模板”版本包含%占位符%,适合替换其中一种更经典的文本处理工具。

一个思想 - Ant有一个filter chain的想法,它可以用来在复制时转换文件 - NAnt有相同的概念,我最近用它来很好地配置部署文件。