私にとってより良い方法は、特定の属性のみを設定しているため、存在しない場合にのみ要素を挿入することでした。要素を削除すると、メイン要素の他の属性が存在する場合、それらが破棄されます。
例:web.config(要素なし)
<serviceBehaviors>
<behavior name="Wcf.ServiceImplementation.AllDigitalService_Behavior">
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
web.config(要素付き)
<serviceBehaviors>
<behavior name="Wcf.ServiceImplementation.AllDigitalService_Behavior">
<serviceDebug httpsHelpPageEnabled="true" />
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
XPath式でロケーターを使用して、ノードが存在しない場合はノードを追加し、属性を設定します。
<serviceDebug xdt:Transform="Insert"
xdt:Locator="XPath(/configuration/system.serviceModel/behaviors/serviceBehaviors/behavior[not(serviceDebug)])" />
<serviceDebug includeExceptionDetailInFaults="true" xdt:Transform="SetAttributes" />
結果の両方のweb.configファイルにはincludeExceptionDetailInFaults = "true"が含まれ、2番目のファイルには、httpsHelpPageEnabled属性が保持されますが、remove / insertメソッドでは保持されません。