从环境变量派生XML中的值



我有一个XML文件,其中包含以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<Get name="securityHandler">
<Set name="authenticator">
<New class="org.keycloak.adapters.jetty.KeycloakJettyAuthenticator">
<Set name="adapterConfig">
<New class="org.keycloak.representations.adapters.config.AdapterConfig">
<Set name="realm">test-realm</Set>
<Set name="resource">$KC_CLIENTID</Set>
<Set name="authServerUrl">$KC_URL</Set>
<Set name="sslRequired">external</Set>
<Set name="bearerOnly">true</Set>
<Set name="confidentialPort">0</Set>
</New>
</Set>
</New>
</Set>
</Get>
</Configure>

我正在寻找从环境中读取值并根据在环境中设置的值进行替换的XML处理器。

例如,我设置了$KC_URL=http://localhost:8080/auth/,在使用XML处理器后,它应该显示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<Get name="securityHandler">
<Set name="authenticator">
<New class="org.keycloak.adapters.jetty.KeycloakJettyAuthenticator">
<Set name="adapterConfig">
<New class="org.keycloak.representations.adapters.config.AdapterConfig">
<Set name="realm">test-realm</Set>
<Set name="resource">test</Set>
<Set name="authServerUrl">http://localhost:8080/auth/</Set>
<Set name="sslRequired">external</Set>
<Set name="bearerOnly">true</Set>
<Set name="confidentialPort">0</Set>
</New>
</Set>
</New>
</Set>
</Get>
</Configure>

它是否存在这样一个用于linux的XML处理器?

使用xmlstarlet,您可以使用以下方法:

xml ed  -u '//Set[@name="resource"]' -v $KC_URL file.xml

最新更新