.net - 修改 XElement 以具有不同的内容

标签 .net xelement

我有一个 XElement,它的输出是

<Email>address@email.com</Email>

.根据某些标准,我可能需要删除电子邮件地址并将其设置为 null。我知道我可以设置 element.Value ="";但这不会做我想要的。我想修改它,使输出变为:
<Email xsi:nil=\"true\" />

我不想创建一个全新的节点,因为这是文档中的一个引用节点。我想将节点保留在文档中。
我试过
emailItem.Add(new XAttribute("xsi:nil", "true"));

但我收到以下异常

The ':' character, hexadecimal value 0x3A, cannot be included in a name. The following changes create the node almost correctly:


XNamespace xsi = "http://www.w3.org/2001/XMLSchema-instance";                                    
emailItem.Add(new XAttribute(xsi + "nil", true));
emailItem.Value =""; //How do I set to Null?

我最终得到 <Email xsi:nil="true"></Email>相反 <Email xsi:nil="true"/>

最佳答案

是的,您需要指定 XName不同;你不能只是创建一个 XName在这样的命名空间中。

我怀疑你想要这个:

XNamespace xsi = "http://www.w3.org/2001/XMLSchema-instance";
emailItem.Document.Root.Add(new XAttribute(XNamespace.Xmlns + "xsi",
                            xsi.ToString()));
emailItem.Add(new XAttribute(xsi + "nil", true);

完整示例:
using System;
using System.Xml.Linq;

class Test
{
    static void Main()
    {
        XDocument doc = new XDocument(new XElement("root"));
        XElement element = new XElement("email");
        doc.Root.Add(element);
        XNamespace xsi = "http://www.w3.org/2001/XMLSchema-instance";
        element.Document.Root.Add(
            new XAttribute(XNamespace.Xmlns + "xsi", xsi.ToString()));
        element.Add(new XAttribute(xsi + "nil", true));

        Console.WriteLine(doc);
    }
}

输出:
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <email xsi:nil="true" />
</root>

关于.net - 修改 XElement 以具有不同的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10521801/

相关文章:

c# - 删除带有命名空间前缀的 xmlns 属性

c# - IIS WCF 服务托管与 Windows 服务

c# - 从字符串 : "(123) 456-7890" => "1234567890"? 中删除格式

.net - WCF Web 服务请求 : Add a Reference tag instead of KeyIdentifier tag in SecurityTokenReference

c# - 如何使用 C# 从 XML 元素中删除命名空间

c# - 如何将 XElement 转换为 XComment (C#)

.net - F#度量单位如何工作?

c# - 尝试加载格式错误的程序 ERROR

c# - 如何在 C# 中使用 XElement 获取 xml 中第二个子元素的值