XML:将块替换为“变量”

XML:将块替换为“变量”,xml,xml-parsing,logback,Xml,Xml Parsing,Logback,我有一个logback配置xml文件,我想做的是创建两个除了文件名之外完全相同的appender。e、 g: <appender name="app1" class="c"> <encoder> <pattern> My pattern </pattern> </encoder> <file> file 1 </file> </appender> <appen

我有一个logback配置xml文件,我想做的是创建两个除了文件名之外完全相同的appender。e、 g:

<appender name="app1" class="c">
   <encoder> 
      <pattern> My pattern </pattern> 
   </encoder>
   <file> file 1 </file>
</appender>

<appender name="app2" class="c">
   <encoder> 
      <pattern> My pattern </pattern> 
   </encoder>
   <file> file 2 </file>
</appender>
是否有一种方法可以让我进行“xml变量替换”,从而使两个appender中的块相同

   <encoder> 
      <pattern> My pattern </pattern> 
   </encoder>
您可以为编码器元素声明一个实体:


例如,class=c仍然有一些重复,但没有那么多。

因此,虽然原则上当my模式很简单时,这是可行的,但对于logback,my模式字符串中有%,并且在解析该字符串时存在一些问题。”日期-[%level]-来自%thread%n%message%n%xException%n'中的%logger。这将解决我的部分问题,我将四处寻找解决这个问题的方法。错误:参数实体引用%消息;必须以“;”结尾定界符。谢谢。@user247077您可以将百分号表示为字符引用&x25;,e、 g.日期-[&x25;级别]。。。。或者如果太长,则声明另一个,然后使用&p;完美的谢谢奥托,我才意识到我无意中在这个问题上投了你一票。对不起,我现在无法更改它
<!DOCTYPE configuration [
  <!ENTITY encoder "<encoder><pattern> My pattern </pattern></encoder>">
]>
<configuration>
  <appender name="app1" class="c">
    &encoder;
    <file> file 1 </file>
  </appender>
  <appender name="app2" class="c">
    &encoder;
    <file> file 2 </file>
  </appender>
</configuration>