【问题标题】:Derive value in XML from environment variable从环境变量导出 XML 中的值
【发布时间】:2020-08-08 21:23:21
【问题描述】:

我有一个包含以下内容的 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 处理器?

【问题讨论】:

    标签: xml linux ubuntu


    【解决方案1】:

    使用 xmlstarlet,你可以这样做:

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

    【讨论】:

      猜你喜欢
      • 2018-12-05
      • 2011-05-31
      • 1970-01-01
      • 1970-01-01
      • 2011-02-09
      • 2020-07-20
      • 1970-01-01
      • 2015-11-02
      • 1970-01-01
      相关资源
      最近更新 更多