2015-05-29 2 views
1

Я работаю на XML, где я хочу, чтобы вставить ниже XML тег в родительском XML:Вставка XML в XML-документ в указанном теге

<Subject></Subject> 

Родитель XML

<School> 
    <ClassB></ClassB> 
    <ClassA> 
     <Students> 
     </Students> 
    </ClassA> 
</School> 

хочу окончательный вариант

<School> 
    <ClassB></ClassB> 
    <ClassA> 
     <Subject></Subject> 
     <Students> 
     </Students> 
    </ClassA> 
</School> 

судимы ниже код:

XmlDocument xmlRequest = new XmlDocument(); 
xmlRequest.LoadXml(parentXML); 
XmlDocumentFragment xmlfrag = xmlRequest.CreateDocumentFragment(); 
xmlfrag.InnerXml = xmlSubjects; 
xmlRequest.DocumentElement.InsertBefore(xmlfrag, xmlRequest.DocumentElement.FirstChild); 

Это вставит Subject элемент сразу после школы. Итак, как вставить по определенному пути. В этом случае элемент ClassA.

Пожалуйста, помогите мне здесь.

+1

Итак, вы хотите найти (например, SelectSin gleNode («Школа/ClassA/Students»), а затем вызывается метод InsertBefore ... –

ответ

0

Вы должны использовать GetElementByName или какой-то метод, чтобы получить узел CLASSA:

XmlNode xNode = xmlRequest.SelectSingleNode("School/ClassA"); 

Затем Добав.тему в качестве нового дочернего узла:

XmlNode newNode = xmlRequest.CreateNode(XmlNodeType.Element, "Subject", Nothing); 
xNode.AppendChild(newNode); 

Если вы хотите добавить его в конкретный место, перечислить родительский узел и существующий узел, а затем использовать InsertBefore:

XmlNode xNode = xmlRequest.SelectSingleNode("School/ClassA"); 
XmlNode siblingNode = xmlRequest.SelectSingleNode("School/ClassA/Students"); 
XmlNode newNode = xmlRequest.CreateNode(XmlNodeType.Element, "Subject", Nothing); 
xNode.InsertBefore(xNode, xSibling); 
+0

Но он будет вставлять тег Subject после тега Students. Я хочу, чтобы он был вставлен в качестве первого ребенка ClassA. – user1893874

+0

Не имеет значения, является ли это первым ребенком или вторым потомком, если вы не слепо используете индексы для поиска детей вместо имен. В любом случае, после его добавления вы можете изменить положение элементов «Студент» и «Предмет», используя «InsertBefore», где «xNode» - это новый узел, который вы создали, это переместит его над предыдущим родством: «XmlNode xNode = XmlNode = xmlConfig. SelectSingleNode (XPath); XmlNode xSibling = xNode.PreviousSibling; XmlNode xParent = xNode.ParentNode; xParent.InsertBefore (xNode, xSibling); ' –

+0

Кроме того, если вы хотите получить очень конкретные результаты, не забудьте получить все ваши критерии в вопросе. Вопрос только в том, что он находится под узлом ClassA, а не должен быть первым ребенком в узле ClassA. –

Смежные вопросы