2017-01-04 32 views
1

データソースを追加するには、次に示すXMLファイルから始めます。私はdatasourc要素を追加するために<datasource>xmlstarletでいくつかのXML要素を挿入してください

<datasource jndi-name="java:jboss/datasources/ExampleTestDS"> 
    <driver>h2</driver> 
</datasource> 

私の現在の試みに貼り付けるには、このためのコマンドを探しています

<?xml version='1.0' encoding='UTF-8'?> 
<server xmlns="urn:jboss:domain:4.2"> 
    <subsystem xmlns="urn:jboss:domain:datasources:4.0"> 
     <datasources> 
      <datasource jndi-name="java:jboss/datasources/ExampleDS" 
       pool-name="ExampleDS"> 
       <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url> 
       <driver>h2</driver> 
       <pool> 
        <min-pool-size>10</min-pool-size> 
        <max-pool-size>20</max-pool-size> 
        <prefill>true</prefill> 
       </pool> 
       <security> 
        <user-name>sa</user-name> 
        <password>sa</password> 
       </security> 
      </datasource> 
      <drivers> 
       <driver name="h2" module="com.h2database.h2"> 
        <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class> 
       </driver>    
      </drivers> 
     </datasources> 
    </subsystem> 
</server> 

xmlstarlet ed --subnode "/server/subsystem/datasources" \ 
    --type elem -n datasource -v "" \ 
    {INPUT_FILE} 

答えて

1

問題があるであること、あなたの入力ファイルの使用XPath式では使用しない名前空間。これを試してみてください:便宜上

xmlstarlet ed -N x="urn:jboss:domain:datasources:4.0" \ 
    -s //x:datasources --type elem -n xxx \ 
    -s //xxx --type attr -n jndi-name -v "java:jboss/datasourcesExampleTestDS" \ 
    -s //xxx --type elem -n driver -v h2 \ 
    -r //xxx -v datasource {INPUT_FILE} 

を、私はxxxと呼ばれる新しい要素を挿入し、datasourceに名前を変更する前にそれを修正します。入力ファイルに存在しない一時的な名前を使用していることを確認してください。

関連する問題