【问题标题】:getting specific xml data using c#使用 c# 获取特定的 xml 数据
【发布时间】:2016-11-10 08:48:04
【问题描述】:

我有一个 xml 文件:

<Address>
  <Data2>
    <Person>
      <EMPL_NUM>>100</EMPL_NUM>
      <NAME>Carl</NAME>
      <ID_NUM>1</ID_NUM>
      <IsRequired>0</IsRequired>
    </Person>
    <Person>
      <EMPL_NUM>200</EMPL_NUM>
      <NAME>Mark</NAME>
      <ID_NUM>2</ID_NUM>
      <IsRequired>0</IsRequired>
    </Person>
    <Person>
      <EMPL_NUM>300</EMPL_NUM>
      <NAME>Tanner</NAME>
      <ID_NUM>3</ID_NUM>
      <IsRequired>0</IsRequired>
    </Person>
 </Data2>
</Address>

我有一个文本框和一个按钮。当我输入“1”并按下按钮时,我的问题是如何将 xml 数据显示到 datagridview,其中文本框的值只会显示具有 ID_num = textbox.text 的数据

数据网格的预期输出:

if txtbox1.text = 1:

 EMPL_NUM  |  Name  |  ID_NUM  |  IsRequired                  
   100     |  Carl  |    1     |      0

if txtbox1.text = 3:

 EMPL_NUM  |  Name  |  ID_NUM  |  IsRequired                  
   300     | Tanner |    3     |      0

【问题讨论】:

  • 你在问如何从你的 XML 文件中读取ID_NUM = 1
  • 是的,先生。如果 textbox1.text =1 那么这应该显示 empl_num、name、id_num 和 isrequired,其 id_num 等于 textbox1.text 的值

标签: c# xml datagridview


【解决方案1】:

试试这个:

class Program
{
    static void Main(string[] args)
    {
        // read your xml from somewhere
        var xml = File.ReadAllText("Address.xml");
        XDocument xmldoc = XDocument.Parse(xml);

        // get the element by id
        var element = GetElementById(xmldoc, 1);

        // deserialize element
        var xmlSerializer = new XmlSerializer(typeof(Person));
        var person = (Person)xmlSerializer.Deserialize(element.CreateReader());

        // continue to work with person
    }

    private static XElement GetElementById(XDocument xmldoc, string id)
    {
        // Elements according to your XML file
        var element = xmldoc.Element("Address")
            .Elements("Data2")
            .Elements("Person")
            .Single(x => x.Element("ID_NUM").Value == id);
        return element;
    }
}


/// <summary>
/// Used for deserialization
/// </summary>
public class Person
{
    public int EMPL_NUM { get; set; }
    public string NAME { get; set; }
    public int ID_NUM { get; set; }
    public bool IsRequired { get; set; }
}

【讨论】:

  • 嗨丹尼尔,我尝试了这段代码,但得到了这个错误“序列不包含匹配元素”
  • 此代码适用于您的 XML。我在您的 XML ist 第 4 行中唯一更改的内容:&lt;EMPL_NUM&gt;&gt;100&lt;/EMPL_NUM&gt;&lt;EMPL_NUM&gt;100&lt;/EMPL_NUM&gt;
猜你喜欢
  • 1970-01-01
  • 2017-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多