كيف يمكنني التنقل بشكل أعمق في بيانات XML وإلحاقها

StackOverflow https://stackoverflow.com/questions/545735

سؤال

لقد قمت بتحميل XmLDocument في الذاكرة وإنشاء XMLELELELEMENT جديدة. الآن أحاول إضافة xmlelement إلى المسار / التقارير / القسم / المضيفين ولكني لا أعرف كيف. يمكنني إضافته بسهولة أسفل عقدة الجذر من XML، لكن لا يمكنني معرفة كيف يمكنني التنقل على مستوى أعمق في XML وإلحاق فقط هناك. في الزائفة، أحاول القيام بذلك:

DOC.SELECTNODS ("/ التقرير / القسم / المضيفين"). الملاحظة (الجوف)؛

الرمز:

        XmlDocument doc = new XmlDocument();

        doc.Load("c:\\data.xml");

        //host
        XmlElement subRoot = doc.CreateElement("host");

        //Name
        XmlElement ElName = doc.CreateElement("name");
        XmlText TxtName = doc.CreateTextNode("text text");
        ElName.AppendChild(TxtName);
        subRoot.AppendChild(ElName);
        doc.DocumentElement.AppendChild(subRoot);

        doc.Save("c:\\data.xml");
هل كانت مفيدة؟

المحلول

حاول تحديد selectsinglenode بدلا من الحمل

XmlElement parent = (XmlElement)doc.SelectSingleNode("/report/section/hosts")
parent.AppendChild(subRoot);

نصائح أخرى

كدت تصل. حاول استخدام SelectSingLenode بدلا من ذلك:

XmlNode node = doc.SelectSingleNode("/report/section/hosts");
node.AppendChild(subRoot);

تقوم طريقة SelectNodes بإرجاع قائمة العقد. يجب عليك استخدام SelectSingLenode بدلا من ذلك ...

على سبيل المثال (أعلى رأسي، لم يختبر في Visual Studio)

doc.SelectSingleNode("/report/section/hosts").AppendChild(subRoot);

تحتاج إلى الحصول على مرجع إلى XMLELELELEMENT في وثيقة (بخلاف الجذر) للإلحاق إليه. هناك عدد الأساليب متاح على xmldocument مثل GetElementById و SelectSingleNode التي تفعل هذا لك بطرق مختلفة، البحث حسب الذوق.

ومع ذلك، فإن API بأكمله في هذا المجال يعتبر عموما مؤلمة بعض الشيء، هل لديك LinQ متاحا؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top