我正在尝试使用正则表达式替换C#中的XML内容,但没有成功。
以下是带有XML示例的示例代码。
static void Main(string[] args)
{
Console.Write(ReplaceValue("<test val='123'><this>something</this></test>", "ANY_XML_BLOB", @"<test[^>]*>\s*(?'value'[^</test]*)"));
}
static string ReplaceValue(string request, string newFieldValue, string pat)
{
string value = String.Empty;
Regex conditionRex = new Regex(pat, RegexOptions.IgnoreCase | RegexOptions.Compiled);
Match match = conditionRex.Match(request);
if(match.Success)
{
value = match.Groups["value"].Value;
return request.Replace(value, newFieldValue);
}
return request;
}
}
预期输出为“this”标记,所有子内容均替换为ANY_XML_BLOB一词。
任何帮助解决这个问题都将受到赞赏。
谢谢!
答案 0 :(得分:1)
我建议使用适当的XML解析器来尝试做你想做的事情。使用正则表达式只是在寻找麻烦。 System.Xml命名空间中的某些内容适合您。您甚至可以尝试LINQ to XML。
伪码:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("<test val='123'><this>something</this></test>");
XmlNodeList testelelist = xmlDoc.GetElementsByTagName("test");
XmlNode testele = testelelist.Item(0);
testele.InnerText = "ANY_XML_BLOB";
答案 1 :(得分:1)
虽然我建议遵循XML解析路由,但您可以尝试这样做:
string output = Regex.Replace(input, "<this>.*?</this>", "ANY_XML_BLOB");