C# xml中的特殊字符转义
使用正则表达式,如何转义xml属性值中的特殊字符 给定以下xml作为字符串:C# xml中的特殊字符转义,c#,regex,xml,xpath,C#,Regex,Xml,Xpath,使用正则表达式,如何转义xml属性值中的特殊字符 给定以下xml作为字符串: "<node attr=\"<Sample>\"></node>" “” 我想得到: "<node attr=\"<Sample>\"></node>" “” System.Security.SecurityElement.Escape函数无法工作,因为它试图转义每个特殊字符(包括标记开始/结束尖括号) string tex
"<node attr=\"<Sample>\"></node>"
“”
我想得到:
"<node attr=\"<Sample>\"></node>"
“”
System.Security.SecurityElement.Escape函数无法工作,因为它试图转义每个特殊字符(包括标记开始/结束尖括号) string text=”“;
字符串模式=@”(?第一个代码段和第二个代码段都不是XML。如果要在.NET framework(使用C#或其他.NET语言)中构建XML然后,您可以使用XmlWriter API或其中一个树模型,如DOM或Linq to XML实现,然后在XmlWriter的帮助下,可以将其序列化为字符串、文件或流。所有这些API都允许您使用.NET字符串
写入或填充属性值,并将处理转义字符,如I agre第一个是无效的xml。但它是一个字符串,可以在特殊字符编码后转换为xml。第二个是有效的var testXml=new System.xml.XmlDocument();testXml.LoadXml(“”);如我所说,使用例如XElement node=new-XElement(“node”,new-XAttribute(“attr”),Console.WriteLine(node);
得到的是格式良好的XML(不是有效的XML,valid with XML表示对模式或DTD有效)。}
string text = "<node attr=\"<Sample>\"></node>";
string pattern = @"(?<=\b\w+\s*=\s*"")<\w+>(?="")";
string result = Regex.Replace(text, pattern, m => SecurityElement.Escape(m.Value));
Console.WriteLine(text);
Console.WriteLine(result);