【问题标题】:XML namespace on child element子元素上的 XML 命名空间
【发布时间】:2016-02-12 17:35:26
【问题描述】:

我有以下类结构:

public class Child { ... }

[XmlRoot("parent", Namespace="parentNamespace")]
public class Parent
{
    [XmlElement(Namespace="childNamespace")]
    public Child Child { get; set; }
}

我尝试使用命名空间对其进行序列化:

namespaces.Add(string.Empty, "parentNamespace");
namespaces.Add("c", "childNamespace");

我得到了在父元素中声明的子命名空间:

<parent xmlns:c="childNamespace" xmlns="parentNamespace">
  <c:Child ... />
</parent>

但我想将子命名空间声明移动到子元素。像这样:

<parent xmlns="parentNamespace">
  <c:Child ... xmlns:c="childNamespace">
</parent>

我应该如何放置 XML 属性来做到这一点?

【问题讨论】:

  • 出于兴趣,你为什么在乎?两者在语义上是等价的——为什么命名空间的设置位置对你很重要?
  • 第二个更接近我正在使用的手册
  • 但是它们应该被任何读取 XML 的东西一样对待...

标签: c# xml xml-namespaces


【解决方案1】:

没有符合标准的 XML 处理器会关心您的两种情况之间的差异,您也不应该关心。这就像属性的排序。这种差异在 XML 级别上是微不足道的。您必须下降到 XML 下的文本级别才能检测或控制这种差异,但在 XML 级别您最好忽略它,因为它无关紧要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多