У меня есть дерево
Microsoft.Web.UI.WebControls.TreeView myTreeView = new Microsoft.Web.UI.WebControls.TreeView();
myTreeView.Nodes.Clear();
И после заполнения данных в treeview я могу показать это красиво. Однако теперь я хочу получить текст в каждой ветки этого дерева (от корня до родителей до ребенка на самом глубоком уровне) и сравнить, если это определенное имя, я помечаю его как выбранный.
Microsoft.Web.UI.WebControls.TreeNodeCollection nodes = myTreeView.Nodes;
foreach (Microsoft.Web.UI.WebControls.TreeNode n in nodes)
{
string nodetext = n.Text;
if (nodetext == "Casting")
myTreeView.SelectedNodeIndex = n.GetNodeIndex();
}
Однако, когда я печатаю nodetext
, я очень nodetext
со своим значением:
<acronym Title='Casting, Closed Die Press Forging, Compression Moulding, Drop Forging, Injection Moulding, Moulding Compounds, Steel Atomisation, Transfer Moulding, Two Shot Moulding, Upset Forging, Vacuum Forming'>Casting, Moulding, Forming, & Forging</acronym>
На дисплее отображается дерево в этом формате:
Почему текст имеет такой формат и как я могу извлечь точно имя каждой ветки, как на изображении? И правильно ли выставлять выбранную функцию, как я делаю выше?
Я нашел ответ. В другой части кода они добавляют nodetext для дерева посредством
return String.Format("<acronym Title='{0}'>{1}</acronym>",
поэтому он имеет такой формат. Чтобы получить текст, мне просто нужно использовать регулярное выражение:
//get text inside tag
string regularExpressionPattern1 = @"<acronym .*?>(.*?)<\/acronym>";
Regex regex = new Regex(regularExpressionPattern1, RegexOptions.Singleline);
MatchCollection collection = regex.Matches(n.Text.ToString());
Match m = collection[0];
var stripped = m.Groups[1].Value;
Спасибо за внимание! Надежда, которая поможет кому-то, что-то связанное.