2017-06-13 141 views
0

我的配置我想要改造這個樣子的:我如何可以替換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> 

所有我想要做的就是D:\my\new\path\<unique value>

我只看到的例子更換D:\my\old\path\<unique value>取代了在<> <>或<>內的房產之間的完整值。我只想做一個簡單的字符串替換文件中的任何地方是可能的?

+1

可以更換所有的屬性,但不能取代使用XDT所有值,[見(https://msdn.microsoft.com/en-us/library/dd465326( v = vs.110).ASPX#ANCHOR_1)。例如''使用XPath替換mypath元素中的所有路徑屬性。不幸的是,你不能替換屬性的一部分。 XSLT轉換可以替換所有元素的值,但我不確定它可以替換字符串的一部分。 –

回答

0

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

我不想以編程方式執行此操作。對於XDT轉換所有瘋狂的事情,他們必須能夠做一個簡單的字符串替換。 – red888

+0

而是XLinq它可以立即使用具有新元素值的xdt變換... –