Pregunta

Tengo una cadena XML que tiene "Comité" nodos matriz y dentro de ese "Comité" del nodo infantil está ahí. Cuando estoy usando "from committee in xDocument.DescendantsAndSelf("Committee")"También está leyendo ChildNode, pero no quiero leer los nodos infantiles, solo quiero leer solo los nodos de los padres.

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

No hay solución correcta

Otros consejos

Utilizar el Elements método en lugar de Descendants.

Cambia esto:

from Committee in xDocument.Descendants("Committee")

A esto:

from Committee in xDocument.Elements("Committee")

Esto devolverá al niño Committee elementos del elemento actual (xDocument variable).

Puede usar el método de extensión XPathSelectelements (en el espacio de nombres System.xml.xpath) para seleccionar solo aquellos elementos del comité que tienen un elemento infantil del comité.

var committeeXmls = from Committee in xDocument.XPathSelectElements("Committee[Committee]")
                    ...
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top