【发布时间】:2015-06-25 12:32:14
【问题描述】:
我需要一些关于 LINQ to XML 的帮助。我很想恢复到 XPath,但我非常热衷于正确学习 LINQ to XML。 所以下面是我的 XML 的精简版:
<SData Key="626">
<Event OID="INITIALVISIT">
<FData FID="MODAL_V10">
<IGData IOID="MODALITYTABLE">
<Item OID="I_TABLE_MODAL_DATE_TABLE" Value="2015-06-03" />
<Item OID="I_TABLE_MODAL_TYPE_TABLE" Value="1" />
</IGData>
<IGData IOID="MODALITYTABLE2">
<Item OID="I_TABLE_MODAL_DATE_TABLE2" Value="2015-06-09" />
<Item OID="I_TABLE_MODAL_TYPE_TABLE2" Value="1" />
</IGData>
</FData>
<FData FID="UPLOAD_V40">
<IGData IOID="IG_IMAGE_UNGROUPED">
<Item OID="I_IMAGE_UPLOAD_XNAT" Value="1" />
<Item OID="I_IMAGE_UPLOAD_COMPLETE" Value="1" />
</IGData>
<IGData IOID="IG_IMAGE_UPLOAD">
<Item OID="I_IMAGE_UPLOAD_XNAT" Value="1" />
<Item OID="I_IMAGE_UPLOAD_COMPLETE" Value="1" />
</IGData>
</FData>
</Event>
<Event OID="FOLLOWUPVISIT">
...
...
</Event>
我想要实现的是为每个事件获取属性 OID="I_IMAGE_UPLOAD_COMPLETE" 的项目的值。这是我目前所拥有的。
XNamespace occ = "http://www.cdisc.org/ns/odm/v1.3";
XNamespace aoc = "http://www.openclinica.org/ns/odm_ext_v130/v3.1";
var datasubject = data_oc.Descendants(occ + "SData");
var event = datasubject.Elements(occ + "Event").Attributes("OID");
foreach (var items in event)
{
string EventTypes = items.Value.ToString();
foreach (var itemData in EventTypes)
{
var Data = from el in datasubject.Descendants(occ + "Event")
where (string)el.Attribute("OID=") == itemData
select(string)el;
}
}
谢谢。
【问题讨论】:
-
使用现有代码时遇到什么异常?
标签: c# xml linq attributes