2017-06-13 2 views
0

Ma config je veux transformer ressemble à ceci:Comment puis-je remplacer une chaîne avec XDT transforme

<sdfsdfsd> 

<blah> 
<mypath>D:\my\old\path\aaa</mypath> 
</blah> 

<blah> 
<mypath>D:\my\old\path\bbb</mypath> 
</blah> 

<blah> 
<mypath>D:\my\old\path\ccc</mypath> 
</blah> 

</sdfsdfsd> 

Tout ce que je veux faire est de remplacer D:\my\old\path\<unique value> avec D:\my\new\path\<unique value>

Je n'ai vu des exemples remplaçons un valeur complète entre <> <> ou une propriété à l'intérieur de <>. Je veux juste faire une simple chaîne de remplacer partout dans le fichier est-ce possible?

+1

Vous pouvez remplacer tous les attributs, mais ne peut pas remplacer toutes les valeurs à l'aide xdt, [voir] (https://msdn.microsoft.com/en-us/library/dd465326 (v = vs.110) .aspx # Anchor_1). Par exemple '' remplace tous les attributs de chemin dans les éléments mypath utilisant XPath. Malheureusement, vous ne pouvez pas remplacer une partie de l'attribut. La transformation XSLT peut remplacer la valeur de tous les éléments, mais je ne suis pas sûr qu'elle puisse remplacer une partie de la chaîne. –

Répondre

0

Essayez xml LINQ

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Xml; 
using System.Xml.Linq; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string xml = 
       "<sdfsdfsd>" + 
        "<blah>" + 
        "<mypath>D:\\my\\old\\path\\aaa</mypath>" + 
        "</blah>" + 
        "<blah>" + 
        "<mypath>D:\\my\\old\\path\\bbb</mypath>" + 
        "</blah>" + 
        "<blah>" + 
        "<mypath>D:\\my\\old\\path\\ccc</mypath>" + 
        "</blah>" + 
       "</sdfsdfsd>"; 

      XElement element = XElement.Parse(xml); 

      foreach(XElement mypath in element.Descendants("mypath")) 
      { 
       mypath.SetValue(((string)mypath).Replace("old","new")); 
      } 

     } 
    } 
} 
+0

Je ne veux pas faire cela par programme. Pour toutes les choses folles que les transformations XDT peuvent faire, elles doivent être capables de faire un simple remplacement de chaîne. – red888

+0

Au lieu de XLinq, il peut utiliser immédiatement la transformation xdt qui a une nouvelle valeur d'éléments ... –