我有一个 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/