C# 如何使用特殊的;xml";带XElement的命名空间前缀

C# 如何使用特殊的;xml";带XElement的命名空间前缀,c#,.net,xml,xml-namespaces,xelement,C#,.net,Xml,Xml Namespaces,Xelement,我正在使用XElement以C#构建一个XML文档,并尝试设置 <myEelment xml:space="preserve"> 但结果是这样的: <myEelment p4:space="preserve" xmlns:p4="xml"> 我明白这是怎么回事——当我想用作名称空间前缀时,我的代码使用“xml”作为名称空间URI。我的问题是AFAICT“xml”名称空间前缀在某种程度上是隐式的,实际上没有与其关联的名称空间URI。那么如何生成名称空间前缀为“xml

我正在使用
XElement
以C#构建一个XML文档,并尝试设置

<myEelment xml:space="preserve">
但结果是这样的:

<myEelment p4:space="preserve" xmlns:p4="xml">


我明白这是怎么回事——当我想用作名称空间前缀时,我的代码使用“xml”作为名称空间URI。我的问题是AFAICT“xml”名称空间前缀在某种程度上是隐式的,实际上没有与其关联的名称空间URI。那么如何生成名称空间前缀为“xml”的属性呢?

标准名称空间作为属性在
XNamespace
类中提供。用那个

var myElement = doc.Descendants("myElement").Single();
myElement.SetAttributeValue(XNamespace.Xml + "space", "preserve");

XNamespace.Xml.GetName(“space”)
和与
http://www.w3.org/XML/1998/namespace
namespace-URI。谢谢-我知道会有一个非常简单的答案,但我就是想不出用谷歌搜索它的方法:)。我真的不喜欢MS重写“+”运算符的方式,这样您就可以将名称空间添加到字符串中并获得名称-这似乎是对“+”概念的滥用,给不经意的读者留下了这样的印象:您将名称空间转换为字符串,然后执行字符串连接。因此,我更喜欢@PetSerAl的语法。
var myElement = doc.Descendants("myElement").Single();
myElement.SetAttributeValue(XNamespace.Xml + "space", "preserve");