如何序列化/反序列化spring xml配置

时间:2017-01-25 09:58:35

标签: java xml-parsing

我要更改另一个程序的ldap配置(称为openkm),其中包括编辑一个spring xml文件,如下所示:

<beans:beans xmlns="http://www.springframework.org/schema/security"
         xmlns:b="http://www.springframework.org/schema/beans"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                        http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd">
<security:ldap-server id="ldapServer"
    url="ldap://192.168.0.6:389/DC=ldap,dc=weyler,dc=local"
    manager-dn="CN=Administrator,cn=users,dc=weyler,dc=local"
    manager-password="password"/>

  <security:authentication-manager alias="authenticationManager">
    <security:ldap-authentication-provider
      server-ref="ldapServer"
      user-search-base="cn=Users"
      user-search-filter="(sAMAccountName={0})"
      group-search-base="cn=Users"
      group-search-filter="(member={0})"
      group-role-attribute="cn"
      role-prefix="none">
    </security:ldap-authentication-provider>
  </security:authentication-manager>

</beans:beans>

配置只关注替换现有值(例如更改ip,port或baseDn)。 使用正则表达式替换全部是不可靠的,并且Dom xml解析器对于这个大的xml文件来说是一团糟。怎么可能这样做?

1 个答案:

答案 0 :(得分:0)

使用Spring PropertyPlaceHolderConfigurer将这些配置外部化为属性文件,并从XML访问它们。示例here

然后,您可以使用apache公共属性或任何其他属性编写器以程序方式更新属性文件。

这样,它比操作XML更有效,更清晰。