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
scroll top