adadsadsasd Ответов: 4

добавьте новый узел в существующий xml-файл


привет ребята,

я хочу добавить новый узел в мой существующий "Input.XML - файл. моя структура XML-файла, как:
<изображения>
</изображения>

это мой корневой узел. я хочу, чтобы при нажатии на кнопку новый дочерний узел добавлялся в этот элемент вместе с элементом. имя элемента происходит из текста текстового поля. я использую много кода, но когда я нажимаю на другое изображение, его имя приходит в текстовое поле, что текст идет и сохраняется в xml, но он перезаписывается в моем предыдущем дочернем узле. я хочу, чтобы при нажатии на кнопку Мой дочерний узел снова добавлялся с текстом textbox в качестве элемента. но имя моего дочернего узла такое же.

например:

<изображения> \\ Это корневой узел

<imgName> \\ Это мой дочерний узел, который я хочу добавить на btn click

Text1 \\ это элемент, который поступает из текстового поля.
</imgName> \\конец дочернего узла

<%-------------когда я снова нажимаю на другое изображение, в текстовом поле появляется новый текст. когда я нажимаю на кнопку, этот текст также сохраняется в моем xml-файле.

<imgName>
Текст2
</imgName>

</изображения>

я надеюсь, что вы поймете, что я хочу сказать ... теперь, пожалуйста, помогите мне в этом..

спасибо!

uspatel

Какой код вы используете при нажатии кнопки

4 Ответов

Рейтинг:
30

anupkulkarni85

Мольбы использовали этот код он поможет
/имя файла
строковое имя файла = @"d:\temp\XMLFile2.xml";

//создать новый экземпляр XmlDocument
XmlDocument doc = новый XmlDocument();

//загрузить из файла
док.Нагрузки(именем);

//создать узел и добавить значение
Узел XmlNode = doc.CreateNode(XmlNodeType.Элемент, "Genre_Genre_Country", null);
//узел.InnerText = "это новый узел";

//создать узел заголовка
Руководство nodeTitle = док.CreateElement("Название");
//добавить ценность для него
nodeTitle.InnerText = "этот заголовок создается кодом";

//создать узел Url-адреса
Руководство nodeUrl = док.CreateElement("Url");
нодерл.Через свойство innerText = @"http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=659406&SiteID=1";

//добавление родительского узла
узел.AppendChild(nodeTitle);
узел.Метода appendChild(nodeUrl);

//добавить в коллекцию элементов
док.Функцию documentelement.AppendChild(узел);

//сохранить обратно
док.Сохранить(именем);


adadsadsasd

строка XmlFile = @"file:///C:\\Documents and Settings\\USITAjay\\My Documents\\Visual Studio 2008\\WebSites\\Presentation\\Input.xml";
XmlDocument xdoc = новый XmlDocument();
xdoc по.Нагрузки(Xmlфайл);
Узел XmlNode = xdoc.CreateElement(XmlNodeType.Элемент,"imgName",null);
узел.Через свойство innerText = txtHideImage.Текст;

XmlNode nodetitle = xdoc.CreateElement("Изображения");
nodetitle.InnerText = "Аджай";

узел.AppendChild(nodetitle);
xdoc.Функцию documentelement.AppendChild(узел);

xdoc по.Сохранить(Xmlфайл);

Это дает ошибку :
1.Лучший перегруженный метод соответствует forsystem.Xml.XmlDocument.CreateElement(string, string, string)' имеет некоторые недопустимые аргументы
2.Аргумент '1': не удается преобразовать из 'System.Xml.XmlNodeType' в 'string'

adadsadsasd

спасибо большое за это...

Рейтинг:
22

uspatel

попробуйте Google!
одной из полезных ссылок может быть такая
попробовать это добавление нового узла в существующий xml-файл


adadsadsasd

Я получил эту ошибку на xdoc.save(имя файла). "Форматы URI не поддерживаются." - что это?

Рейтинг:
1

Member 13591806

Light weight XmlDocumentFragment can be good idea in this regards:
https://msdn.microsoft.com/en-us/library/system.xml.xmldocumentfragment(v=vs.110).aspx


Рейтинг:
0

Jamil Hallal

Метод appendChild() добавляет дочерний узел к существующему узлу.

Новый узел добавляется (добавляется) после всех существующих дочерних узлов.

Примечание: используйте insertBefore (), если положение узла важно.

Следующий фрагмент кода создает элемент () и добавляет его после последнего дочернего элемента первого элемента:

xmlDoc=loadXMLDoc("books.xml");

newel=xmlDoc.createElement("edition");

x=xmlDoc.getElementsByTagName("book")[0];
x.appendChild(newel);


Метод insertBefore() используется для вставки узла перед указанным дочерним узлом.

Этот метод полезен, когда важно положение добавленного узла:
xmlDoc=loadXMLDoc("books.xml");

newNode=xmlDoc.createElement("book");

x=xmlDoc.documentElement;
y=xmlDoc.getElementsByTagName("book")[3];

x.insertBefore(newNode,y);


проверьте эту ссылку для получения более подробной информации
http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/e3f3c6b1-43ee-46d7-bc09-edb8dcedb8d1[^]