Мне нужно создать XML-файл, который выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<ns:Root xmlns:ns0="http://namespace">
  <Node1>
    <A>ValueA</A>
    <B>ValueB</B>
  </Node1>
</Root>

Это мой код:

const string ns = "http://namespace";
var xDocument = new XDocument(
    new XElement("Root",
        new XAttribute(XNamespace.Xmlns + "ns0", ns),
        new XElement("Node1",
            new XElement("A", "ValueA"),
            new XElement("B", "ValueB")
        )
    )
);

Но это дает:

<?xml version="1.0" encoding="utf-8"?>
<Root xmlns:ns0="http://namespace">
  <Node1>
    <A>ValueA</A>
    <B>ValueB</B>
  </Node1>
</Root>

Обратите внимание на отсутствующий «ns0:» перед корневым узлом. Как я могу это добавить? В остальном все должно быть точно так же.

1
sventevit 12 Июл 2013 в 13:38
Вы пытались поместить "ns:Root" вместо "Root" в качестве параметра первого конструктора XElement?
 – 
HuorSwords
12 Июл 2013 в 13:40
1
@HuorSwords: не работает, я получаю исключение «Символ ':', шестнадцатеричное значение 0x3A, не может быть включен в имя».
 – 
sventevit
12 Июл 2013 в 13:42
Пожалуйста, проверьте этот ответ на аналогичный (даже не равный) вопрос.
 – 
HuorSwords
12 Июл 2013 в 13:45

1 ответ

Лучший ответ

Попробуй это

XNamespace ns = XNamespace.Get("http://namespace");

var xDocument = new XDocument(
                new XElement(ns + "Root",
                    new XAttribute(XNamespace.Xmlns + "ns0", ns),
                    new XElement("Node1",
                        new XElement("A", "ValueA"),
                        new XElement("B", "ValueB")
                        )));
1
Rakesh 12 Июл 2013 в 14:18