我有一个XmlWriter,它已经有一个设置了xmlns属性的根元素。
我现在有了一个XElement(有很多子元素),没有指定名称空间。
如果我这样做的话:
xElement.WriteTo(writer);我以一个无效的xml结尾:
<MyRootElement xmlns="SomeNameSpace">
<!-- Some elements of this namespace -->
<MyXElementType xmlns="">
<!-- A lot of other Element in the same namespace -->
</MyXelementType>
<!-- Some elements of this namespace -->
</MyRootElement>因为禁止指定空的命名空间。这是有问题的,因为我需要在XSD之后进行验证。
我能做些什么来结束这段话:
<MyXElementType><!-- HERE, no xmlns !!! -->
<!-- A lot of other Element in the same namespace -->
</MyXelementType>
<!-- Some elements of this namespace -->
</MyRootElement>发布于 2015-07-13 22:59:49
是什么让你认为它是无效的?The spec说:
默认命名空间声明中的属性值可以为空。在声明的范围内,这具有相同的效果,即没有默认的命名空间。
如果要删除它,则需要在编写之前将XElement及其后代的名称空间设置为与现有根元素相同的名称空间。您可以在创建时执行此操作:
XNamespace ns = "SomeNamespace";
var element = new XElement(ns + "MyXElementType");或事后:
foreach (var element in element.DescendantsAndSelf())
{
element.Name = ns + element.Name.LocalName;
}https://stackoverflow.com/questions/31383246
复制相似问题