我正在努力自动配置几个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元素。从脚本中最简单的方法是什么?
答案 0 :(得分:3)
您可以在previous question找到更多答案。 xmlstar似乎是最受欢迎的答案。
答案 1 :(得分:1)
通常我会通过编写XSL样式表并从脚本中调用SAXON来完成此操作。
答案 2 :(得分:0)
Ant的.NET表兄NAnt拥有XmlPeek和XmlPoke个任务,这些任务在编辑非常复杂的WCF配置文件时非常有用。如果您可以为Ant找到类似的任务,那么您可能会有一个胜利者。
或者,另一种方法可能是配置文件的“模板”版本包含%占位符%,适合替换其中一种更经典的文本处理工具。
一个思想 - Ant有一个filter chain的想法,它可以用来在复制时转换文件 - NAnt有相同的概念,我最近用它来很好地配置部署文件。