У меня была такая же проблема.Один из ответов здесь помог мне в моем пути, но не полностью, поэтому вот мое решение / разъяснение:
Что вам нужно сделать, это указать URL-адрес для вашего пространства имен, например:
XNamespace ns = "http://www.example.com";
... затем добавьте это пространство имен в каждом Element
:
var someElement = new XElement(ns + "ElementName", "Value");
Однако, чтобы это работало, вы должны включить этот определенный URI в XML следующим образом:
var rootElement =
new XElement(ns + "MyRootElement",
new XAttribute(XNamespace.Xmlns + "ns",
"http://www.example.com"));
Теперь вы можете добавить someElement
(и другие)на rootElement
, и пространство имен будет включено, поскольку на него ссылается (по URL) в корне:
rootElement.Add(someElement);
rootElement.Add(new XElement(ns + "OtherElement", "Other value"));
Это сгенерирует XML, который будет выглядеть примерно так:
<ns:MyRootElement xmlns:ns="http://www.example.com">
<ns:ElementName> (...) </ns:ElementName>
<ns:OtherElement> (...) </ns:OtherElement>
</ns:MyRootElement>