我在代码隐藏中有一部分 XAML 字符串,如下所示
string str = "<Button Name = \"btn1\" Foo = \"Bar"\ /><TextBox Name=\"txtbox1\">"
什么应该是正则表达式来查找仅 Name 属性的值。
我想
btn1
txtbox1
如何?
你肯定不想这样做吗?
string str = "<Button Name = \"btn1\" /><TextBox Name=\"txtbox1\"/>";
var attrs = XElement.Parse("<r>"+str+"</r>").Elements().Attributes("Name").Select(a => a.Value);
foreach (var attr in attrs) Console.WriteLine(attr);
除了 LINQ,您还可以使用 XPath 来获取值。这将为您提供第一个按钮的名称:
string str = "<Button Name = \"btn1\" /><TextBox Name=\"txtbox1\"/>";
XmlDocument doc = new XmlDocument();
doc.LoadXml("<root>" + str + "</root>");
string name = doc.SelectSingleNode("root/Button/@Name").InnerText;
或者,如果您只想获取任何项目的名字属性:
string name = doc.SelectSingleNode("root/*/@Name").InnerText;
或者获取所有项目的所有名称属性的列表:
foreach (XmlNode node in doc.SelectNodes("root/*/@Name"))
{
string name = node.InnerText';
}
等等
如果你可以使用环视,试试这个:
(?<=\bName\b\s*=\s*")[^"]+