Codingnow20 Ответов: 1

Можно ли разрешить символы в имени XML-элемента?


У меня есть текстовые поля, которые я сохраняю текст в xml-файл.Первое текстовое поле входит в имя элемента, а второе-в значение, поэтому я хочу иметь возможность использовать любые символы в этих текстовых полях, но я получаю ошибки, говорящие о том, что символ " шестнадцатеричное значение 0x20 не может быть включен в имя.Мне нужно разрешить символы в названии.Я использую XDocument, а не XmlDocument

Что я уже пробовал:

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

1 Ответов

Рейтинг:
11

Dave Kreskowiak

Вы, вероятно, говорите о разделе CDATA. Они могут быть использованы для хранения любой текстовой информации, которую вы хотите, не беспокоясь о побеге символов.

Google: "XML CDATA"[^]


Codingnow20

Вау я никогда раньше не видел CDATA но я довольно новичок в xml так что большое спасибо

Codingnow20

Позволяет ли CDATA использовать пробелы ??

Dave Kreskowiak

Что случилось, когда вы попробовали это сделать?

Вы можете поместить все, что хотите, в раздел CDATA, единственным исключением из которого является последовательность символов ]]>.

Codingnow20

ну, я пробовал, но это всегда дает мне ошибку "имена не могут начинаться с<"

Codingnow20

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

Dave Kreskowiak

ОК. Я не могу видеть ваш код и то, что вы вводите в текстовые поля, поэтому я не могу сказать вам, что происходит не так.

Codingnow20

XDocument xdoc = XDocument.Нагрузка("SavedData.xml");
xdoc по.Добавить(новый элемент XElement(новая XCData(текстовое поле textbox1.текст).Метод toString(),поле textbox2.текст));

Codingnow20

это то, что я использую для записи в xml, но он всегда говорит, что имена не могут начинаться с '<'

Dave Kreskowiak

У вас есть параметры для нового XElement в обратном порядке. Имя, которое вы хотите назвать элементом, стоит на первом месте, а значение, ваш новый объект XCData, - на втором.

    xdoc.Add(New XElement(textbox2.text, new XCData(textbox1.text)));

Codingnow20

имя, которое я хочу назвать элементом, происходит из textbox1 say iI type John Doe in the textbox1 it says that names can't include spaces.

Dave Kreskowiak

Откуда мне это знать, если вы используете имена текстовых полей по умолчанию?

В этом случае замените имена текстовых полей в этой строке кода!

А еще лучше, дайте осмысленные имена всем вашим элементам управления!