C# 将LINQ中的命名空间属性写入XML

C# 将LINQ中的命名空间属性写入XML,c#,linq-to-xml,C#,Linq To Xml,我想通过C#使用LINQ到XML写出以下XAML 如何指定用于实现上述输出的XNamespace?此代码将执行以下操作: var el = new XElement( "Activity", new XAttribute(XName.Get("Class", "SomeNamespace"), "WorkflowConsoleApplication1.Activity1"), new XAttribute( XName.Get("VisualBasic

我想通过C#使用LINQ到XML写出以下XAML


如何指定用于实现上述输出的XNamespace?

此代码将执行以下操作:

var el = new XElement(
    "Activity",
    new XAttribute(XName.Get("Class", "SomeNamespace"), "WorkflowConsoleApplication1.Activity1"),
    new XAttribute(
        XName.Get("VisualBasic.Settings", "SomeOtherNamespace"),
        "Assembly references and imported namespaces for internal implementation"));
Console.WriteLine(el.ToString());

请注意,您没有指定前缀,而是指定这些属性所属的名称空间。这是经过设计的,并且与XML规范一致。前缀将自动生成,如果此元素是另一个元素的子元素,并且该元素已经为您使用的名称空间定义了前缀,则会从包含的元素中提取前缀。

这就是我所拥有的前缀,但它不会剪切它。如果在工作流4.0设计器中加载生成的XAML,则会出现以下错误:找不到成员“{x}类”。找不到成员“{mva}VisualBasic.Settings”。如果我删除LINQ2XML生成的别名,并用“x”和“mva”替换它们,那么这就成功了,这会带来什么呢?哇。如果是这样的话,那就是一个听起来很糟糕的XAML阅读器。令人惊讶的您确定要将xmlns声明保留在我的代码示例发出的XML中吗?否则,我知道您可以使用旧的XML对象模型(XmlDocument)来控制初始化
XmlNamespaceManager时使用的前缀。我猜XAML读卡器可能已损坏,因为我无法使用LINQ2XML实现这一点。将您的答案标记为已接受答案
var el = new XElement(
    "Activity",
    new XAttribute(XName.Get("Class", "SomeNamespace"), "WorkflowConsoleApplication1.Activity1"),
    new XAttribute(
        XName.Get("VisualBasic.Settings", "SomeOtherNamespace"),
        "Assembly references and imported namespaces for internal implementation"));
Console.WriteLine(el.ToString());