问题描述
|
如何检查一个字符串是否至少包含一个xmlNode。该字符串可能是有效的XML,也可能不是。除了检查字符串中的\“ <\”或\“> \”,还有其他方法吗?
谢谢
解决方法
正则表达式将起作用(提示笑声),有一个警告。这个正则表达式不会告诉您是否有多个有效元素,而只是告诉您至少有一个有效元素。
static void Main(string[] args)
{
System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex(@\"<([^>]+)>[^<]*</(\\1)>\");
Console.WriteLine(r.IsMatch(\"<a>One Element</a>\").ToString());
Console.WriteLine(r.IsMatch(\"<a>Not An Element</b>\").ToString());
Console.WriteLine(r.IsMatch(\"<a>One Element</a><b>Two Element</b><c>Red Element</c><d>Blue Element</d>\").ToString());
Console.ReadLine();
}
, 以塞缪尔·沃伦的答案为基础,
这个处理可选属性。
static void Main(string[] args)
{
System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex(@\"<([^\\s^>]+)\\s*[^>]*>[^<]*</(\\1)>\");
Console.WriteLine(r.IsMatch(\"<a>One Element</a>\").ToString());
Console.WriteLine(r.IsMatch(\"<a href=\\\"http://www.google.com\\\">One Element</a>\").ToString());
Console.WriteLine(r.IsMatch(\"<a href=\\\"http://www.google.com\\\" id=\\\"whatever\\\" class=\\\"ui-link\\\">One Element</a>\").ToString());
Console.WriteLine(r.IsMatch(\"<a>Not An Element</b>\").ToString());
Console.WriteLine(r.IsMatch(\"<a>One Element</a><b>Two Element</b><c>Red Element</c><d>Blue Element</d>\").ToString());
Console.ReadLine();
}