将XML属性加载到c#winform
我有一个xml文件,其结构如下:将XML属性加载到c#winform,c#,C#,我有一个xml文件,其结构如下: <MACHINE> <CONTROL NAME="" LABEL="TEST1" LABEL1="TEST1"/> <CONTROL NAME="" LABEL="TEST2" LABEL1="TEST2"/> <CONTROL NAME="" LABEL="TEST3" LABEL1="TEST3"/> </MACHINE> XmlDocument xdoc = new XmlDocument
<MACHINE>
<CONTROL NAME="" LABEL="TEST1" LABEL1="TEST1"/>
<CONTROL NAME="" LABEL="TEST2" LABEL1="TEST2"/>
<CONTROL NAME="" LABEL="TEST3" LABEL1="TEST3"/>
</MACHINE>
XmlDocument xdoc = new XmlDocument();
xdoc.Load(@"C:projects.xml");
XmlNodeList list = xdoc.SelectNodes("//MACHINE");
但我不知道如何进一步
我添加了这个代码来生成一些文本框
var n = 5;
for (int i = 0; i < n; i++)
{
for (int i = 0; i < n; i++)
{
//Create label
Label label = new Label();
label.Text = String.Format("Label {0}", i);
//Position label on screen
label.Left = 10;
label.Top = (i + 1) * 20;
//Create textbox
TextBox textBox = new TextBox();
//Position textbox on screen
textBox.Left = 120;
textBox.Top = (i + 1) * 20;
//Add controls to form
label.Name = list[i].Attributes["LABEL"].Value;
textBox.Name = list[i].Attributes["LABEL1"].Value;
this.Controls.Add(label);
this.Controls.Add(textBox);
}
var n=5;
对于(int i=0;i
我如何修改它,使其接受XML文件中的maby值,而不是5个?您的XML应该有适当的结束元素,如
<CONTROL NAME="" LABEL="TEST1" LABEL1="TEST1"></CONTROL>
进入
然后设置
var n = list.Count;
在中设置标签和文本框名称
label.Name = list[i].Attributes["LABEL"].Value;
textBox.Name = list[i].Attributes["LABEL1"].Value;
我建议您尝试:
非常感谢邹的回复,嗯,我更新了,可以吗?我无法执行it@AniAni,您是否检查了xml字符串结束元素?的
语法在您更新的问题中似乎重复。然后将//机器
更改为//控件
,并设置var n=list.Count;
是的,谢谢尽管如此,我还是得到了不同的标签名称,如标签1、标签2等,但它计算了行数。请回答一个问题,我如何用标签1填充文本框?@AniAni,textBox.text=list[i]。Attributes[“LABEL1”].Value;
XmlNodeList list = xdoc.SelectNodes("//CONTROL");
var n = list.Count;
label.Name = list[i].Attributes["LABEL"].Value;
textBox.Name = list[i].Attributes["LABEL1"].Value;
var root = XElement.Load(@"c:\projects.xml");
var controlElements = root.Descendants("CONTROL");
int labelCounter = 1;
foreach (var element in controlElements)
{
var labelId = (string) element.Attribute("LABEL");
var textBoxName = (string) element.Attribute("LABEL1");
Label label = new Label();
label.Text = string.Format("Label {0}", labelCounter);
label.Left = 10;
label.Top = (labelCounter + 1) * 20;
TextBox textBox = new TextBox();
textBox.Left = 120;
textBox.Top = (labelCounter + 1) * 20;
this.Controls.Add(label);
this.Controls.Add(textBox);
labelCounter++;
}