查找XML节点文本并使用其ID

时间:2009-11-01 21:50:14

标签: c# xml

我有以下(示例)我的xml文档:

<Students>
    <Student ID = *GUID NUMBER*>
    <FullName>John Smith</FullName>
    <Address>123 Fake St</Address>
    </Student>
    <Student ID = *GUID NUMBER*>
    <FullName>Henry Doe</FullName>
    <Address>321 Whatever Lane</Address>

每个人都有更多数据。我想要做的是在ac#windows app表单中,单击一个按钮,搜索用户选择的'FullName'字段,并获取该用户条目的ID,以便我可以使用该ID填写形成。 IE:用户选择“John Smith”并按“Go”。这将使用John Smith的数据填充表单的字段。 所以我在考虑两件事,使用'SelectSingleNode'?获取FullName节点的文本,然后以某种方式获取用户ID? 我的其余代码使用的是XmlDocument调用。

这是我到目前为止所做的:

string FullName = StudentSelectStudentComboBox.Text;
XmlDocument fullnamefinderdoc = new XmlDocument();
fullnamefinderdoc.Load("Data.xml");
XmlNode node = fullnamefinderdoc.SelectSingleNode("//[FullName='FullName']");
if (node != null)
{ string studentID = node.Attributes["ID"].Value; }
MessageBox.Show("Student ID is: " + studentID);

1 个答案:

答案 0 :(得分:2)

这个怎么样:

public string FindStudentID(string fullName)
{
   string result = string.Empty;

   XmlDocument doc = new XmlDocument();
   doc.Load(@"your-xml-file-name.xml");

   string xpath = string.Format("/Students/Student[FullName='{0}']", fullName);
   XmlNode node = doc.SelectSingleNode(xpath);

   if (node != null)  // we found John Smith
   {
      result = node.Attributes["ID"].Value;
   }

   return result;
}

应该找到“fullName”的学生节点,并提取“ID”属性的字符串表示,然后可以将其转换为C#中的GUID。

从您的代码中,致电是:

private void StudentGoButton_Click(object sender, EventArgs e) 
{
    string myStudentID = FindStudentID(StudentSelectStudentComboBox.Text);
}

马克