Lisez les nœuds parents uniquement à partir de XML à l'aide de LinqToxML
-
23-09-2019 - |
Question
J'ai une chaîne XML qui a des nœuds parents "comité" et à l'intérieur d'un autre "comité" de nœud enfant est là. Quand j'utilise "from committee in xDocument.DescendantsAndSelf("Committee")
"Il est également de lire ChildNode, mais je ne veux pas lire les nœuds enfants, je veux juste lire uniquement les nœuds parents.
<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);
}
}
Pas de solution correcte
Autres conseils
Utilisez le Elements
Méthode au lieu de Descendants
.
Change ça:
from Committee in xDocument.Descendants("Committee")
Pour ça:
from Committee in xDocument.Elements("Committee")
Cela rendra l'enfant Committee
Éléments de l'élément actuel (xDocument
variable).
Vous pouvez utiliser la méthode d'extension XPathSelectElements (dans l'espace de noms System.xml.xpath) pour sélectionner uniquement les éléments du comité qui ont un élément enfant du comité.
var committeeXmls = from Committee in xDocument.XPathSelectElements("Committee[Committee]")
...
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow