首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用带有XmlWriter命名空间的XmlWriter编写XElement?

用带有XmlWriter命名空间的XmlWriter编写XElement?
EN

Stack Overflow用户
提问于 2015-07-13 20:19:29
回答 1查看 361关注 0票数 1

我有一个XmlWriter,它已经有一个设置了xmlns属性的根元素。

我现在有了一个XElement(有很多子元素),没有指定名称空间。

如果我这样做的话:

代码语言:javascript
复制
    xElement.WriteTo(writer);

我以一个无效的xml结尾:

代码语言:javascript
复制
<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之后进行验证。

我能做些什么来结束这段话:

代码语言:javascript
复制
    <MyXElementType><!-- HERE, no xmlns !!! -->
        <!-- A lot of other Element in the same namespace -->
    </MyXelementType>
    <!-- Some elements of this namespace -->
</MyRootElement>
EN

回答 1

Stack Overflow用户

发布于 2015-07-13 22:59:49

是什么让你认为它是无效的?The spec说:

默认命名空间声明中的属性值可以为空。在声明的范围内,这具有相同的效果,即没有默认的命名空间。

如果要删除它,则需要在编写之前将XElement及其后代的名称空间设置为与现有根元素相同的名称空间。您可以在创建时执行此操作:

代码语言:javascript
复制
XNamespace ns = "SomeNamespace";
var element = new XElement(ns + "MyXElementType");

或事后:

代码语言:javascript
复制
foreach (var element in element.DescendantsAndSelf())
{
    element.Name = ns + element.Name.LocalName;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31383246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档