2012-10-09 12 views
6

Tengo un proyecto C# que hace referencia a muchos servicios WCF. Para pruebas locales, deseo reemplazar el contenido de las etiquetas de identidad para que acepte cualquier cosa que se ejecute en localhost.Insertar elementos múltiples con Web.Config transforma

La siguiente transformación funciona, pero solo inserta el elemento dns en la primera ubicación coincidente. Entonces, si tuviera 5 puntos finales referenciados, uno tendría la etiqueta dns, y los demás tendrían elementos de identidad vacíos.

<system.serviceModel> 
    <client> 
     <endpoint> 
     <identity> 
      <dns xdt:Transform="Insert" value="localhost"/> 
      <userPrincipalName xdt:Transform="RemoveAll" value="someIdentity" /> 
     </identity> 
     </endpoint> 
    </client> 
    </system.serviceModel> 

¿Cómo modifico todos los elementos coincidentes, no solo el primero?

+0

¿Estás tratando de eliminar todos los elementos ''? –

+0

Sí, y esa parte funciona bien. Sin embargo, también quiero reemplazar esos elementos con , y no lo he hecho. He solucionado esto enumerando todos los puntos finales manualmente, pero si hay una solución más elegante, me encantaría escucharla. – Zugbo

Respuesta

2

Utilice el atributo xdt:Locator para definir una expresión XPath que coincida con todos los elementos <identity> en los que desea insertar.

<system.serviceModel> 
    <client> 
     <endpoint> 
     <identity xdt:Locator="XPath(//identity)"> 
      <dns xdt:Transform="Insert" value="localhost"/> 
      <userPrincipalName xdt:Transform="RemoveAll"/> 
     </identity> 
     </endpoint> 
    </client> 
    </system.serviceModel> 
+1

Esto solo parece actualizar la primera coincidencia –

+0

Al navegar por el código fuente en http://xdt.codeplex.com/SourceControl/latest#XmlTransform/XmlTransforms.cs me lleva a concluir que esto no es compatible actualmente –

Cuestiones relacionadas