首页 > 解决方案 > 如何创建包含前缀但没有包装器的 XElement?

问题描述

我正在尝试像这样创建一个简单的空 XElement:

<dyn:Positions>
   <Vector2-Array>
   </Vector2-Array>
</dyn:Positions>

我有上面定义的命名空间:

XNamespace dyn = "https://www.abc.at/dyn";

但是当我创建 XElement 时:

XElement positions = new XElement(dyn + "Positions", new XElement("Vector2-Array"));

结果是这样的:

<Positions xmlns="dyn">
  <Vector2-Array xmlns="" />
</Positions>

如果不将其包装在另一个 XElement 中,这可能吗?因为我需要这个元素稍后附加到另一个文档中,在里面添加更多元素之后。

标签: c#xmlxelement

解决方案


我认为您希望 Vector2-Array 与Positions 位于同一命名空间中,然后在输出中看不到它:

XElement positions = new XElement(dyn + "Positions", 
       new XElement(dyn + "Vector2-Array"));

这给了

<Positions xmlns="https://www.abc.at/dyn">
  <Vector2-Array />
</Positions>

dyn:表示法只是一种简写,以后将其合并到某些父 XML 中时并不重要。您应该非常确定所有内容属于哪个命名空间。


推荐阅读