Domanda

Ho una stringa XML che ha i nodi dei genitori "comitato" e all'interno di quel "comitato" del nodo infantile "è presente. Quando sto usando "from committee in xDocument.DescendantsAndSelf("Committee")"Sta leggendo anche ChildNode, ma non voglio leggere nodi figlio, voglio solo leggere solo nodi genitori.

<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);
                }
            }

Nessuna soluzione corretta

Altri suggerimenti

Utilizzare il Elements metodo invece di Descendants.

Cambia questo:

from Committee in xDocument.Descendants("Committee")

A questo:

from Committee in xDocument.Elements("Committee")

Questo restituirà il bambino Committee elementi dell'elemento corrente (xDocument variabile).

È possibile utilizzare il metodo di estensione XPathSelectElements (nello spazio dei nomi System.xml.xPath) per selezionare solo quegli elementi del comitato che hanno un elemento figlio del comitato.

var committeeXmls = from Committee in xDocument.XPathSelectElements("Committee[Committee]")
                    ...
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top