@notmvp

Как сформировать XML с префиксом при помощи XElement (C#)?

Приветствую!

Очень простая задача, но, потратив целый день на поиск ответа, я так и не нашёл решение. Прошу помочь.

Мне требуется сформировать XML-документ вида:
<pref:rootItem xmlns:pref="urn://requiredLink">
	<pref:childItem>
		...
		<pref:mainContent>content</pref:mainContent>
		...
	</pref:childItem>
</pref:rootItem>

Вся сложность заключается в том, что абсолютно каждый элемент моего документа должен содержать префикс pref. Как это реализовать с применением класса XElement на C#? У упомянутого класса отсутствуют свойства/методы, позволяющие непосредственно задавать префикс элемента. Поиск же ответа дал понять, что это связано с пространствами имен xml, но пример нормальной реализации аналогичного кода я так и не нашёл.

Изначально я напрямую пытался задать имя с префиксом:
XElement item = new XElement("pref:mainContent", "content");

Но такой вариант недопустим и программа генерирует Xml.XmlException:
The ':' character, hexadecimal value 0x3A, cannot be included in a name

Советуемый вариант типа
XNamespace nameSpace = "urn://requiredLink";
XElement item = new XElement(nameSpace + "mainContent", "content");

и близко не даёт желаемого выхода. Прошу, помогите разобраться.
  • Вопрос задан
  • 150 просмотров
Решения вопроса 1
Ukrainskiy
@Ukrainskiy
Это называется namespace. https://docs.microsoft.com/ru-ru/dotnet/standard/l...
XNamespace aw = "http://www.adventure-works.com";
XElement root = new XElement(aw + "Root",
    new XAttribute(XNamespace.Xmlns + "aw", "http://www.adventure-works.com"),
    new XElement(aw + "Child", "child content")
);
Console.WriteLine(root);

<aw:Root xmlns:aw="http://www.adventure-works.com">
  <aw:Child>child content</aw:Child>
</aw:Root>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы