C# 如何用XDT转换替换字符串
我要转换的配置如下所示:C# 如何用XDT转换替换字符串,c#,xml,visual-studio,xdt-transform,C#,Xml,Visual Studio,Xdt Transform,我要转换的配置如下所示: <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> </b
<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\old\path\aaa
D:\my\old\path\bbb
D:\my\old\path\ccc
我只想用D:\my\old\path\
替换D:\my\new\path\
我只看到过一些示例,它们替换了中间的完整值或内部的属性。我只想在文件中的任何地方做一个简单的字符串替换,这可能吗?试试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"));
}
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Xml;
使用System.Xml.Linq;
命名空间控制台应用程序1
{
班级计划
{
静态void Main(字符串[]参数)
{
字符串xml=
"" +
"" +
“D:\\my\\old\\path\\aaa”+
"" +
"" +
“D:\\my\\old\\path\\bbb”+
"" +
"" +
“D:\\my\\old\\path\\ccc”+
"" +
"";
XElement元素=XElement.Parse(xml);
foreach(element.substands(“mypath”)中的XElement mypath)
{
SetValue(((字符串)mypath.Replace(“旧”、“新”));
}
}
}
}
试试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"));
}
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Xml;
使用System.Xml.Linq;
命名空间控制台应用程序1
{
班级计划
{
静态void Main(字符串[]参数)
{
字符串xml=
"" +
"" +
“D:\\my\\old\\path\\aaa”+
"" +
"" +
“D:\\my\\old\\path\\bbb”+
"" +
"" +
“D:\\my\\old\\path\\ccc”+
"" +
"";
XElement元素=XElement.Parse(xml);
foreach(element.substands(“mypath”)中的XElement mypath)
{
SetValue(((字符串)mypath.Replace(“旧”、“新”));
}
}
}
}
您可以替换所有属性,但不能使用xdt替换所有值。例如,使用XPath替换mypath元素中的所有路径属性。很遗憾,您无法替换属性的一部分。XSLT转换可以替换所有元素值,但我不确定它是否可以替换字符串的一部分。您可以替换所有属性,但不能使用xdt替换所有值。例如,使用XPath替换mypath元素中的所有路径属性。很遗憾,您无法替换属性的一部分。XSLT转换可以替换所有元素的值,但我不确定它是否可以替换字符串的一部分。我不想以编程方式执行此操作。对于XDT转换可以做的所有疯狂的事情,它们必须能够做一个简单的字符串替换。相反,XLinq可以使用具有新元素值的立即XDT转换…我不想以编程方式执行此操作。对于XDT转换可以做的所有疯狂的事情,它们必须能够做一个简单的字符串替换。。。