簡體   English   中英

讀取xml文件並將id的值寫入C#中的相關文本框中

[英]Read xml file and write ids' values into related textbox in C#

我有一個名為“ 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>

我想閱讀此xml文件並填充文本框。 但是在Windows窗體應用程序中, txtAAA.text值必須采用id =“ aaa”值,即78678。同樣, txtBBB.text值必須采用id =“ bbb”值,即37287。我該怎么做?

編輯:

我這樣嘗試過:

 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");

在您的情況下,如果您有更多的文本框,我會將this.Controls.OfType<TextBox>()的結果保存在一個集合中,然后進行處理。

您可以使用XPath查找節點。

然后找到屬性“值”。

        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教程-http: //www.w3schools.com/xpath/xpath_syntax.asp

您可以創建xml項列表,並在foreach循環中基於TextBox名稱分配。

假設TextBox名稱為:

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

測試:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM