sahabiswarup Ответов: 2

Корневой элемент отсутствует


Получение ошибки при загрузке xml-документа с помощью c#; я хочу вставить записи в xml-документ, а также обновить и удалить записи из этого xml.
Я добавил новый xml-файл в свой проект внутри папки App_Data и написал следующий код, чтобы вставить в него запись.
Но в разделе Загрузки я получаю эти вышеописанные ошибки.
Вот мой фрагмент кода:
System.Xml.XmlDocument myXmlDocument = new System.Xml.XmlDocument();
myXmlDocument.Load(Server.MapPath("test.xml"));


Вот мой test.xml формат
<?xml version="1.0" encoding="utf-8"?>
<entry>
  <Name name="test"></Name>
  <Location name="India"></Location>
  <Email name="aaa@test.com"></Email>
  <DOBirth name="01-02-1988"></DOBirth>
  <Gender name="M"></Gender>
</entry>

2 Ответов

Рейтинг:
16

Kuthuparakkal

System.Xml.XmlDocument myXmlDocument = new System.Xml.XmlDocument();
string xmlPath = System.IO.Path.Combine(Server.MapPath("~/App_Data"), "test.xml");
if(!File.Exists(xmlPath))
 throw new Exception("Cannot find xml");
myXmlDocument.Load(xmlPath);


sahabiswarup

Он отлично работает; не могли бы вы сказать мне, пожалуйста, как вставить данные в xml в виде дерева?

вход
имя name="тест"
название местоположения="Индия"
имя электронной почты="aaa@test.com" /электронная почта
dobirth наименование="01-02-1988" /dobirth
gender name="M" /пол
/местоположение
/имя
имя name="тест1"
название местоположения="Индия"
имя электронной почты="aaa@test.com" /электронная почта
имя dobirth="01-05-1989" /dobirth
гендерное имя="F" /gender
/местоположение
/имя
/вход

Kuthuparakkal

Системы.В формате XML.Объект XmlDocument myXmlDocument = новая система.В формате XML.Объект XmlDocument();
строка xmlPath = System.IO.Path.Комбайн(Сервер.MapPath("~/App_Data"), "test.xml");
если(!файл.Существует(xmlPath))
выбросить новое исключение("не удается найти xml");
myXmlDocument.Загрузить(xmlPath);

Руководство откройте панель = myXmlDocument.Функцию documentelement.Возвращение null;

XmlElement appendedElementUsername = myXmlDocument.CreateElement("Имя");
XmlText xmlTextUserName = xmlDoc.CreateTextNode("Индия");
appendedElementUsername.Метода appendChild(xmlTextUserName);
откройте панель.Метода appendChild(appendedElementUsername);
myXmlDocument.Функцию documentelement.Метода appendChild(откройте панель);

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



myXmlDocument.Сохранить(xmlPath);

sahabiswarup

Большое спасибо Кутупараккал

Kuthuparakkal

всегда пожалуйста!

Primo Chalice

Привет,

Не могли бы вы сказать мне, как использовать openFileDialog для загрузки XML-файла и отображения данных в RichTextBox?

Я попробовал следующее:

Диалоговое окно openfiledialog openFileDialog1 = новое диалоговое окно openfiledialog();

openFileDialog1.InitialDirectory = "c:\\";
openFileDialog1.Filter = "xml-файлы (*.xml)|*.xml|все файлы (*.*)|*.*";
openFileDialog1.FilterIndex = 2;
openFileDialog1.RestoreDirectory = true в;
строка open = openFileDialog1.имя файла;

XmlDocument doc = новый XmlDocument();
doc.LoadXml(открыть);
строка xmlString = doc.Через свойство innerText;
RichTextBox2.Text = xmlString;

Рейтинг:
1

Bernhard Hiller

Вы случайно не сохранили файл в другой кодировке? Попробуйте сохранить его еще раз и убедитесь, что вы явно выбрали UTF-8.


sahabiswarup

Вот мой код C#
Системы.В формате XML.Объект XmlDocument myXmlDocument = новая система.В формате XML.Объект XmlDocument();
myXmlDocument.Загрузка(Сервер.MapPath("test.xml"));
System.Xml.XmlNode myXmlNode = myXmlDocument.Функцию documentelement.Возвращение null;

System.Xml.XmlElement myXmlElement = myXmlDocument.CreateElement("запись");
myXmlElement.SetAttribute("Имя", Сервер.HtmlEncode("aaa"));
myXmlElement.SetAttribute("Местоположение", Сервер.HtmlEncode("Индия"));
myXmlElement.SetAttribute("Электронная Почта", Сервер.Функция htmlencode("aaa@gmail.com"));
myXmlElement.SetAttribute("DOB", Сервер.Функция htmlencode("01-08-1988"));
myXmlElement.SetAttribute("Пол", Сервер.HtmlEncode("Мужской"));

myXmlDocument.Функцию documentelement.Метод insertbefore(myXmlElement, myXmlNode);
myXmlDocument.Сохранить(Сервер.MapPath("test.xml"));