所以我有一个程序可以读取XML文件中的所有名称节点,并将它们添加到组合框中。单击一个按钮,它将获取此响应,并需要从名称所在节点的子节点获取所有其他数据。
XML文档:
<People>
<Person>
<Name>Greg</Name>
<Age>23</Age>
<Height>200</Height>
</Person>
<Person>
<Name>John</Name>
<Age>34</Age>
<Height>230</Height>
</Person>
</People>
到目前为止我得到了什么:
XmlDocument Doc = new XmlDocument();
Doc.Load(FilePath);
foreach (XmlNode Node in Doc.SelectNodes("People/Person"))
{
comboBox1.Items.Add(Node.SelectSingleNode("Name").InnerText);
}
string RegPicked = comboBox1.SelectedItem.ToString();
foreach (XmlNode xNode in Doc.SelectNodes("People/Person"))
if (xNode.SelectSingleNode("Name").InnerText == RegPicked)
{
textBox1.Text = xNode.ParentNode.ChildNodes.ToString();
}
Doc.Save(FilePath);
当我运行代码时,我只在文本框中输入“System.Xml.XmlChildNodes”。 我知道我做错了什么,但我不确定是什么。
答案 0 :(得分:0)
你必须区分子节点:
textBox1.Text = xNode.ParentNode.ChildNodes.SelectSingleNode("age").InnerText;
答案 1 :(得分:0)
这样做,您将获得正在搜索的节点的父节点内的所有元素。
string str = @"<People>
<Person>
<Name>Greg</Name>
<Age>23</Age>
<Height>200</Height>
</Person>
<Person>
<Name>John</Name>
<Age>34</Age>
<Height>230</Height>
</Person>
</People>";
XDocument xdoc = XDocument.Parse(str);
var xmlURL = (from el in xdoc.Descendants("Name")
where el.Value == "John"
select el.Parent).First().ToString();