اقرأ العقد الأصل فقط من XML باستخدام linqtoxml
-
23-09-2019 - |
سؤال
لديّ سلسلة XML التي تحتوي على "لجنة" العقد الوالدية وداخلها "لجنة" عقدة طفل أخرى موجودة. عندما أستخدم "from committee in xDocument.DescendantsAndSelf("Committee")
"إنه يقرأ childnode أيضًا ، لكنني لا أريد قراءة العقد الفرعية ، أريد فقط قراءة العقد الأصل فقط.
<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);
}
}
لا يوجد حل صحيح
نصائح أخرى
استخدم ال Elements
الطريقة بدلا من Descendants
.
غير هذا:
from Committee in xDocument.Descendants("Committee")
الى هذا:
from Committee in xDocument.Elements("Committee")
هذا سوف يعيد الطفل Committee
عناصر العنصر الحالي (xDocument
عامل).
يمكنك استخدام طريقة تمديد XPathSelectElements (في مساحة اسم System.xml.xpath) لتحديد عناصر اللجنة فقط التي لديها عنصر طفل في اللجنة.
var committeeXmls = from Committee in xDocument.XPathSelectElements("Committee[Committee]")
...
لا تنتمي إلى StackOverflow