我将所有数据保存在 xml 文件中。
<myself>
<name>sara</name>
<age>20</age>
<gender>female</gender>
</myself>
<myself>
<name>bob</name>
<age>29</age>
<gender>male</gender>
</myself>
并有搜索框,用户可以根据类型和关键字搜索所有数据。为此,我输入了两种类型;按名称和按性别。
因此,一旦用户选择姓名并输入关键字sara
,输出将显示有关她的所有信息。
输出示例应为 display
sara
20
female
对于这个输出,我让它与每个自己的文本框一起显示。有 3 个文本框标题名称、年龄和性别。
XmlDocument xml = new XmlDocument();
xml.Load("C:\\Users\\HDAdmin\\Documents\\Fatty\\SliceEngine\\SliceEngine\\bin\\Debug\\saya.xml");
XmlNodeList xnList = xml.SelectNodes("/myself");
foreach (XmlNode xn in xnList)
{
string name = xn.InnerText;
nameBox.Text = nameBox.Text + " " + name;
string age = xn.InnerText;
ageBox.Text = ageBox.Text + " " + age;
string gender = xn.InnerText;
genderBox.Text = genderBox.Text + " " + gender;
}
我试过使用XmlNodeList xnList = xml.SelectNodes("/myself");
,但它会打印出关于 sara 和 bob 的所有信息。
所以我猜我可以让xml文件像
<name>sara
<gender>female
<age>20</age>
</gender>
</name>
但我认为这行不通。有办法吗?
这是保存数据的方法。
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("C:\\Users\\HDAdmin\\Documents\\SliceEngine\\SliceEngine\\bin\\Debug\\saya.xml");
XmlElement contentElement = xmlDoc.CreateElement("myself");
XmlElement nameEl = xmlDoc.CreateElement("name");
XmlText xmlText = xmlDoc.CreateTextNode(berjaya[1]);
nameEl.AppendChild(xmlText);
contentElement.AppendChild(nameEl);
xmlDoc.DocumentElement.AppendChild(contentElement);
XmlElement ageEl = xmlDoc.CreateElement("age");
ageEl.InnerText = berjaya[3];
contentElement.AppendChild(ageEl);
xmlDoc.DocumentElement.AppendChild(contentElement);
XmlElement genEl = xmlDoc.CreateElement("gender");
genEl.InnerText = berjaya[39];
contentElement.AppendChild(genEl);
xmlDoc.DocumentElement.AppendChild(contentElement);
++++++++++++====问题已解决====++++++++++++++++++++++
谢谢您的帮助。这已经解决了。我正在使用@horgh 给出的答案。
所以这就是我学到的。
1-在我的 xml 文件中,我需要有主标签。
2- 使用 if 循环从关键字中检索数据。
并查看其他数据,它将是这样的:
string name = xn.OfType<XmlNode>().FirstOrDefault(n => n.Name == "name").FirstChild.Value;
if (name == "sara")
{
nameBox.Text = nameBox.Text + " " + name;
string age = xn.OfType<XmlNode>().FirstOrDefault(n => n.Name == "age").FirstChild.Value;
ageBox.Text = ageBox.Text + " " + age;
string gender = xn.OfType<XmlNode>().FirstOrDefault(n => n.Name == "gender").FirstChild.Value;
genderBox.Text = genderBox.Text + " " + gender;
}
有关更多信息,您可以在下面看到。再次感谢您提供的所有帮助。