2017-01-25 99 views
0

我去改變另一個程序(其稱爲openkm),其中包括編輯Spring的XML文件中像這樣的LDAP配置:如何序列化/反序列化的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)。 將regex全部替換爲不可靠,Dom xml解析器對於這個大的xml文件來說是一團糟。如何做到這一點?

回答

0

使用Spring PropertyPlaceHolderConfigurer將這些配置外化爲屬性文件並從XML中訪問它們。示例here

然後,您可以使用apache常用屬性或任何其他屬性編寫器編程來更新您的屬性文件。

這樣一來,它將比操縱XML更加高效和乾淨。

+0

它不是我的xml,它的一些其他程序配置文件,我應該配置programaticaly。儘管openkm中的人應該考慮使用屬性文件而不是spring xml文件來配置他們的程序! – redbeard1970

+0

在這種情況下,您無法使用XML解析器。如果您發現DOM解析器API很難,JDOM將是一個不錯的選擇。但是,如果文件非常大,效率問題您可以嘗試使用StAX解析器。 –

+0

如果我只知道那個spring xml config classes,那麼jaxb應該是一個選項 – redbeard1970