Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 读取xml文件并写入ID';将值放入C中的相关文本框中#_C#_Xml - Fatal编程技术网

C# 读取xml文件并写入ID';将值放入C中的相关文本框中#

C# 读取xml文件并写入ID';将值放入C中的相关文本框中#,c#,xml,C#,Xml,我有一个名为“numbers.xml”的xml文件,如下所示: <?xml version="1.0" encoding="utf-8" ?> <program> <box id="aaa" value="78678"/> <box id="bbb" value="37287"/> <box id="ccc" value="783"/> <box id="ddd" value="7867"/> <box id="eee

我有一个名为“numbers.xml”的xml文件,如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<program>
<box id="aaa" value="78678"/>
<box id="bbb" value="37287"/>
<box id="ccc" value="783"/>
<box id="ddd" value="7867"/>
<box id="eee" value="786"/>
<box id="fff" value="23"/>
<box id="ggg" value="453"/>
<box id="hhh" value="4537"/>
</program>
 XmlDocument xmldoc = new XmlDocument();
 xmldoc.Load(openfiledialog1.FileName); 
 XmlNodeList nodelist = xmldoc.DocumentElement.ChildNodes;
 XmlNode xmlnode = nodelist.Item(0); 
 txtAAA.Text = xmlnode.Attributes["id"].InnerText; 

但“aaa”显示在文本框中。这完全是失败

n这行代码可能会帮助您:

TextBox textBox = this.Controls.OfType<TextBox>().FirstOrDefault(tb => tb.Name == "idFromXMl");
TextBox TextBox=this.Controls.OfType().FirstOrDefault(tb=>tb.Name==“idFromXMl”);

在您的情况下,如果您有更多的文本框,我会将
this.Controls.OfType()
的结果保存在一个集合中,并对其进行处理。

n这行代码可能会帮助您:

TextBox textBox = this.Controls.OfType<TextBox>().FirstOrDefault(tb => tb.Name == "idFromXMl");
TextBox TextBox=this.Controls.OfType().FirstOrDefault(tb=>tb.Name==“idFromXMl”);

在您的情况下,如果您有更多的文本框,我会将
this.Controls.OfType()
的结果保存在一个集合中,并使用它进行操作。

您可以创建一个xml项列表,并基于foreach循环中的文本框名称分配

假设文本框名称为:

txtAAA
txtBBB
txtCCC
...etc
您只需删除
txt
部分即可找到正确的值id

var data = XElement.Load("C:\\Test.xml").Descendants("box");

foreach (var textbox in Controls.OfType<TextBox>())
{
    var value = data.FirstOrDefault(v => v.Attribute("id").Value == textbox.Name.Replace("txt","").ToLower());
    if (value != null)
    {
        textbox.Text = value.Attribute("value").Value;
    }
}
var data=XElement.Load(“C:\\Test.xml”).subjections(“box”);
foreach(Controls.OfType()中的var textbox)
{
var value=data.FirstOrDefault(v=>v.Attribute(“id”).value==textbox.Name.Replace(“txt”,”).ToLower();
if(值!=null)
{
textbox.Text=value.Attribute(“value”).value;
}
}
测试:


您可以创建一个xml项列表,并根据foreach循环中的文本框名称分配

假设文本框名称为:

txtAAA
txtBBB
txtCCC
...etc
您只需删除
txt
部分即可找到正确的值id

var data = XElement.Load("C:\\Test.xml").Descendants("box");

foreach (var textbox in Controls.OfType<TextBox>())
{
    var value = data.FirstOrDefault(v => v.Attribute("id").Value == textbox.Name.Replace("txt","").ToLower());
    if (value != null)
    {
        textbox.Text = value.Attribute("value").Value;
    }
}
var data=XElement.Load(“C:\\Test.xml”).subjections(“box”);
foreach(Controls.OfType()中的var textbox)
{
var value=data.FirstOrDefault(v=>v.Attribute(“id”).value==textbox.Name.Replace(“txt”,”).ToLower();
if(值!=null)
{
textbox.Text=value.Attribute(“value”).value;
}
}
测试:


您可以使用XPath查找节点

然后找到属性“value”

        XmlDocument xmldoc = new XmlDocument();
        xmldoc.Load( openfiledialog1.FileName );
        XmlNode nodeAAA = xmldoc.SelectSingleNode( "/program/box[@id='aaa']" ); //XPath Query here.
        txtAAA.Text = nodeAAA.Attributes["value"].InnerText;

XPath教程-

您可以使用XPath查找节点

然后找到属性“value”

        XmlDocument xmldoc = new XmlDocument();
        xmldoc.Load( openfiledialog1.FileName );
        XmlNode nodeAAA = xmldoc.SelectSingleNode( "/program/box[@id='aaa']" ); //XPath Query here.
        txtAAA.Text = nodeAAA.Attributes["value"].InnerText;

XPath教程-

你能展示一下你尝试过但没有成功的东西吗?我使用openfiledialog进行了管理。最后,我试着这样做:
xmldocumentxmldoc=newxmldocument();Load(openfiledialog1.FileName);XmlNodeList nodelist=xmldoc.DocumentElement.ChildNodes;XmlNode XmlNode=nodelist.Item(0);txtAAA.Text=xmlnode.Attributes[“id”].InnerText但文本框中显示“aaa”。这完全是失败。好吧,那么哪个文本框类呢?NET中至少有3个。指定WinForms/Wpf/…您的窗口或窗体类将具有按名称查找控件的方法。您需要使用
txtAAA.Text=xmlnode.Attributes[“value”].InnerText
。但是,依我看,最好将XML读入一个集合——可能是一个字典,属性名为key,值属性中的值为Dictionary值。然后,您可以在字典中循环,找到具有相应id的控件并分配值。您可以显示您尝试的无效内容吗?我使用openfiledialog进行了管理。最后,我试着这样做:
xmldocumentxmldoc=newxmldocument();Load(openfiledialog1.FileName);XmlNodeList nodelist=xmldoc.DocumentElement.ChildNodes;XmlNode XmlNode=nodelist.Item(0);txtAAA.Text=xmlnode.Attributes[“id”].InnerText但文本框中显示“aaa”。这完全是失败。好吧,那么哪个文本框类呢?NET中至少有3个。指定WinForms/Wpf/…您的窗口或窗体类将具有按名称查找控件的方法。您需要使用
txtAAA.Text=xmlnode.Attributes[“value”].InnerText
。但是,依我看,最好将XML读入一个集合——可能是一个字典,属性名为key,值属性中的值为Dictionary值。然后,您可以在字典中循环,找到具有相应id的控件并分配值。+1。我只想用.Value.Equals(textbox.Name.Replace(“txt”,String.Empty),stringcomparison.CurrentCultureIgnoreCase)来更改.Value==@Gonzix,你可以,但是你也需要先对
值进行空检查,但是使用
=
你不需要空检查触摸但我仍然认为这是值得努力的,以防名称不全是小写+1。我只想用.Value.Equals(textbox.Name.Replace(“txt”,String.Empty),stringcomparison.CurrentCultureIgnoreCase)来更改.Value==@Gonzix,你可以,但是你也需要先对
值进行空检查,但是使用
=
你不需要空检查触摸但我仍然认为这是值得的努力,只是以防万一的名称不全是小写