6

Ho una sezione personalizzata nel mio file web.config simile a questa struttura:XDT Config Transforms - ReplaceAll?

<Messages> 
    <Message id="1'> 
    <Property Name="foo" value="bar" /> 
    </Message> 
    <Message id="2'> 
    <Property Name="foo" value="bar2" /> 
    </Message> 
</Messages> 

voglio applicare una trasformazione personalizzata su questo in modo tale che posso cambiare il valore di tutte le istanze dell'elemento Property con Name = "foo" - ma non riesco a farlo funzionare.

ho provato:

<Messages> 
    <Message> 
    <Property Name="foo" value="updated" xdt:Locator=Match(Name) xdt:Transform="Replace" /> 
    </Message> 
</Mesasges> 

posso rimuovere tutti gli elementi, sostituendo la trasformata = Sostituire con una Transform = RemoveAll - tutte le idee come posso ottenere qualcosa di simile a sostituire tutti i valori?

+0

Forse ci mostrano che cosa hai provato? –

+0

Mi spiace, la formattazione XMl mi ha fatto la prima volta. Aggiornato ora –

risposta

7

Sembra che Trasforma: Sostituisci sostituisce solo il primo elemento corrispondente da documentation on msdn: ... Se è selezionato più di un elemento, viene sostituito solo il primo elemento selezionato. Ho risolto questo problema utilizzando una combinazione di Match-Condizioni e SetAttributes, qualcosa di simile:

<Messages> 
    <Message> 
    <Property value="updated" xdt:Locator=Condition(@Name='foo') xdt:Transform="SetAttributes(value)" /> 
    </Message> 
</Messages> 
+0

per ulteriori chiarimenti, dalla documentazione: _... La trasformazione SetAttributes influisce su ** tutti gli elementi ** selezionati. Questo è diverso dall'attributo Replace transform, che influenza ** solo ** il primo elemento selezionato se sono selezionati più elementi_. –

+0

È fondamentale ricordare che l'XPath non è sufficiente perché funzioni. La struttura di XML in trasformazione * deve * riflettere la struttura dell'XML che viene trasformato, quindi se il nodo 'Property' è posto come una radice di trasformazione non funzionerà. E, per di più, funziona solo con 'SetAttributes',' Replace' non funzionerà neanche – SOReader

Problemi correlati