2017-06-13 6 views
0

Meine Config verwandelt Ich möchte wie folgt aussieht verwandeln:Wie kann ich ersetzen eine Zeichenfolge mit XDT

<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> 

Alles, was ich tun möchte ersetzen ist D:\my\old\path\<unique value> mit D:\my\new\path\<unique value>

ich nur Beispiele gesehen haben, ersetzt ein kompletter Wert zwischen <> <> oder eine Eigenschaft innerhalb <>. Ich möchte nur einen einfachen String ersetzen überall in der Datei ist das möglich?

+1

Sie alle Attribute ersetzen können, aber alle Werte mit xdt nicht ersetzen kann, [siehe] (https://msdn.microsoft.com/en-us/library/dd465326 (v = vs.110) .aspx # Anker_1). Zum Beispiel '' Ersetze alle Pfadattribute in Mypath-Elementen mit XPath. Leider können Sie einen Teil des Attributs nicht ersetzen. Die XSLT-Transformation kann alle Elemente ersetzen, aber ich bin nicht sicher, ob sie einen Teil der Zeichenfolge ersetzen kann. –

Antwort

0

Try 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

Ich möchte dies nicht programmgesteuert tun. Für all die verrückten Dinge, die XDT-Transformationen können, müssen sie in der Lage sein, einen einfachen String zu ersetzen. – red888

+0

Statt XLinq kann es sofort xdt-Transformation verwenden, die einen neuen Elementwert hat ... –

Verwandte Themen