Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# xml中的特殊字符转义_C#_Regex_Xml_Xpath - Fatal编程技术网

C# xml中的特殊字符转义

C# xml中的特殊字符转义,c#,regex,xml,xpath,C#,Regex,Xml,Xpath,使用正则表达式,如何转义xml属性值中的特殊字符 给定以下xml作为字符串: "<node attr=\"<Sample>\"></node>" “” 我想得到: "<node attr=\"&lt;Sample&gt;\"></node>" “” System.Security.SecurityElement.Escape函数无法工作,因为它试图转义每个特殊字符(包括标记开始/结束尖括号) string tex

使用正则表达式,如何转义xml属性值中的特殊字符

给定以下xml作为字符串:

"<node attr=\"<Sample>\"></node>"
“”
我想得到:

"<node attr=\"&lt;Sample&gt;\"></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);