【问题标题】:Create xml-attribute with namespace programmatically以编程方式创建带有命名空间的 xml 属性
【发布时间】:2016-04-14 08:52:25
【问题描述】:

如何将以下内容创建为XElement

<data name="MyKey" xml:space="preserve">
    <value>Date of birth</value>
    <comment>Some comment</comment>
</data>

它抛出

“':' 字符,十六进制值 0x3A,不能包含在名称中。”

var data = new XElement("data");

data.Add(new XAttribute("name", translation.Key));
data.Add(new XAttribute("xml:space", "preserve")); // <-- here is the error

data.Add(new XElement("value") { Value = "Date of birth" });
data.Add(new XElement("comment") { Value = "Some comment" });

由于这是ResX-文件的一部分,因此会有很多这样的&lt;data&gt;&lt;/data&gt;-元素。

【问题讨论】:

    标签: c# xml linq-to-xml xml-namespaces


    【解决方案1】:

    为方便起见,使用XName +(XNamespace, string) 运算符将命名空间与本地名称分开:

    data.Add(new XAttribute(XNamespace.Xml + "space", "preserve"));
    

    请注意,您可以更简单地一次性编写整个元素创建:

    var data = new XElement("data",
        new XAttribute("name", "MyKey"),
        new XAttribute(XNamespace.Xml + "space", "preserve"),
        new XElement("value", "Date of birth"),
        new XElement("comment", "Some comment")
    );
    

    【讨论】:

    • 天哪……这很简单。也感谢“单一创作”的提示。
    猜你喜欢
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-24
    相关资源
    最近更新 更多