C# 使用LINQToXML仅从XML读取父节点
我有一个XML字符串,它有父节点“Committee”,在这个字符串中还有另一个子节点“Committee”。当我在xDocument.genderantsandself(“委员会”)中使用“C# 使用LINQToXML仅从XML读取父节点,c#,linq,linq-to-xml,C#,Linq,Linq To Xml,我有一个XML字符串,它有父节点“Committee”,在这个字符串中还有另一个子节点“Committee”。当我在xDocument.genderantsandself(“委员会”)中使用“”时,它也在读取子节点,但我不想读取子节点,我只想读取父节点 <Committee> <Position>STAFF</Position> <Appointment>1/16/2006</Appointment> <Committ
”时,它也在读取子节点,但我不想读取子节点,我只想读取父节点
<Committee>
<Position>STAFF</Position>
<Appointment>1/16/2006</Appointment>
<Committee>PPMSSTAFF</Committee>
<CommitteeName>PPMS Staff</CommitteeName>
<Expiration>12/25/2099</Expiration>
</Committee>
<Committee>
<Position>STAFF</Position>
<Appointment>4/16/2004</Appointment>
<Committee>PMOSSTAFF</Committee>
<CommitteeName>PPMS </CommitteeName>
<Expiration>12/25/2099</Expiration>
</Committee>
XElement xDocument= XElement.Parse(xml);
var committeeXmls = from Committee in xDocument.Descendants("Committee")
select new
{
CommitteeName = Committee.Element("CommitteeName"),
Position = Committee.Element("Position"),
Appointment = Committee.Element("Appointment"),
Expiration = Committee.Element("Expiration")
};
int i = 0;
foreach (var committeeXml in committeeXmls)
{
if (committeeXml != null)
{
drCommittee = dtCommittee.NewRow();
drCommittee["ID"] = ++i;
drCommittee["CommitteeName"] = committeeXml.CommitteeName.Value;
drCommittee["Position"] = committeeXml.Position.Value;
drCommittee["Appointment"] = committeeXml.Appointment.Value;
drCommittee["Expiration"] = committeeXml.Expiration.Value;
dtCommittee.Rows.Add(drCommittee); // educationXml.GraduationDate.Value, educationXml.Major.Value);
}
}
工作人员
1/16/2006
PPMSSTAFF
PPMS员工
12/25/2099
工作人员
4/16/2004
PMOSSTAFF
PPMS
12/25/2099
XElement xDocument=XElement.Parse(xml);
var committeeXmls=来自xDocument.subjects中的委员会(“委员会”)
选择新的
{
CommitteeName=委员会元素(“CommitteeName”),
职位=委员会要素(“职位”),
任命=委员会要素(“任命”),
到期=委员会要素(“到期”)
};
int i=0;
foreach(committeeXmls中的var committeeXml)
{
if(committeeXml!=null)
{
drCommittee=dtCommittee.NewRow();
drCommittee[“ID”]=++i;
drCommittee[“CommitteeName”]=committeeXml.CommitteeName.Value;
drCommittee[“Position”]=committeeXml.Position.Value;
drCommittee[“任命”]=committeeXml.Appointment.Value;
drCommittee[“Expiration”]=committeeXml.Expiration.Value;
dtCommittee.Rows.Add(drCommittee);//educationXml.GraduationDate.Value,educationXml.Major.Value);
}
}
您可以使用XPathSelectElements扩展方法(在System.Xml.Xpath命名空间中)仅选择那些具有委员会子元素的委员会元素
var committeeXmls = from Committee in xDocument.XPathSelectElements("Committee[Committee]")
...
使用元素
方法而不是子体
更改此项:
from Committee in xDocument.Descendants("Committee")
为此:
from Committee in xDocument.Elements("Committee")
这将返回当前元素(xDocument
变量)的子Committee
元素