Leggi solo i nodi genitori da XML usando LinqToxml
-
23-09-2019 - |
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