【发布时间】:2017-05-03 16:11:40
【问题描述】:
我正在尝试从我的 xml 文件中获取相关数据。因此,例如,我希望从场地元素中选择名为 Roker Park 的元素中的所有数据。我如何只选择该数据而不选择其余数据?这是我的 xdocument
<Funrun>
<Venue>
<Name>Roker Park</Name>
<Runner>
<Charity>Cancer Research</Charity>
<Firstname>Roger</Firstname>
<Lastname>Malibu</Lastname>
<Sponsorship>550</Sponsorship>
</Runner>
<Runner>
<Charity>Arthritis UK</Charity>
<Firstname>Adam</Firstname>
<Lastname>White</Lastname>
<Sponsorship>340</Sponsorship>
</Runner>
<Venue>
<Name>Victoria Park</Name>
<Runner>
<Charity>Against Malaria Foundation</Charity>
<Firstname>Rob</Firstname>
<Lastname>Tate</Lastname>
<Sponsorship>850</Sponsorship>
</Runner>
<Runner>
<Charity>Fred Follows Foundation</Charity>
<Firstname>Peter</Firstname>
<Lastname>Jackson</Lastname>
<Sponsorship>500</Sponsorship>
</Runner>
</Venue>
</Funrun>
到目前为止,我获得的代码选择了所有场馆数据,因此我获得了 Victoria Parks 和 Rokers,这是我目前获得的代码:
List<string> VenueNames = new List<string>();
List<string> VenueDataList = new List<string>();
var doc = XDocument.Load("XMLFile1.xml");
var doc2 = XDocument.Load("XMLFile2.xml");
var doc3 = XDocument.Load("XMLFile3.xml");
var combinedunique = doc.Descendants("Venue")
.Union(doc2.Descendants("Venue"))
.Union(doc3.Descendants("Venue"));
foreach (XElement element in combinedunique.DescendantsAndSelf("Venue"))
{
VenueNames.Add(element.Element("Name").Value.ToString());
}
if (Convert.ToString(lstboxVenues.SelectedItem) == VenueNames.ElementAt(0))
{
foreach (XElement element in combinedunique.DescendantsAndSelf("Firstname"))
{
VenueDataList.Add(element.Value);
}
for (int i = 0; i < VenueDataList.Count; i++)
{
lstboxVenueData.Items.Add(VenueDataList.ElementAt(i));
}
}
【问题讨论】:
-
好像你在 xml 示例中没有关闭
</Venue>标记 -
这里有一个类似的答案,应该可以让你得到你想要的stackoverflow.com/questions/752271/…
-
您能否说明您想从给定的 xml 中获取哪些数据?
-
我确实有一个 标签,我只是不小心没有复制它,抱歉。我想要获取的数据是来自 Venue Roker Park 的 Charity、Firstname、Lastname 和 Sponsorship 值,而不是来自 Victoria Park。
标签: c# xml linq linq-to-xml