2

このような分離コードに XAML 文字列の一部があります

string str = "<Button Name = \"btn1\" Foo = \"Bar"\ /><TextBox Name=\"txtbox1\">"

Name属性のみの値を見つけるための正規表現は何ですか。

私が欲しい

btn1
txtbox1

どのように?

4

3 に答える 3

1

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';
}

于 2012-05-30T13:12:52.177 に答える
1

そして、あなたは絶対にこれをしたくありませんか?

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);
于 2012-05-30T12:48:15.327 に答える
0

ルックアラウンドを使用できる場合は、これを試してください。

(?<=\bName\b\s*=\s*")[^"]+
于 2012-05-30T12:46:08.767 に答える