【问题标题】:Creating XML Prefix while Serialization to Namespace Generation在序列化到命名空间生成时创建 XML 前缀
【发布时间】:2015-09-22 08:58:24
【问题描述】:

我想在 C# 中将一个类序列化为 XML

我的课程:

[System.SerializableAttribute()]
[XmlRoot(Namespace = "http://www.unece.org/cefact/namespaces/StandardBusinessDocumentHeader")]

public class StandardBusinessDocument
{
    public StandardBusinessDocumentHeader StandardBusinessDocumentHeader { get; set; }

    public Package Package { get; set; }
}

[System.SerializableAttribute()]
[XmlRoot(Namespace = "http://www.efatura.gov.tr/package-namespace")]
public class Package
{

    public Elements Elements { get; set; }

}

当我将这些类序列化为 XML 时

    XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
    namespaces.Add("sh", "http://www.unece.org/cefact/namespaces/StandardBusinessDocumentHeader");
    namespaces.Add("ef", "http://www.efatura.gov.tr/package-namespace");
    XmlSerializer xser = new XmlSerializer(typeof(StandardBusinessDocument));

    xser.Serialize(soapwriter, new StandardBusinessDocument
    {
        StandardBusinessDocumentHeader = sbd,
        Package = new Package()
        {
            Elements = elements
        }
    }, namespaces);

在那之后,我看到了第一个类 (StandardBusinessDocumentHeader) 和具有 sh prefix-namespaces 的节点下。但是 Pakacge 总是显示 sh: prefix 而不是 ef: 但在另一边显示的 pakage 带有 ef: prefix

我只想将 ef: prefix 添加到 Pakage 节点

【问题讨论】:

    标签: c# xml serialization namespaces


    【解决方案1】:

    你需要为Package属性指定命名空间,这样Package元素才是正确的。

    [XmlElement(Namespace = "http://www.efatura.gov.tr/package-namespace")]
    public Package Package { get; set; }
    

    【讨论】:

      猜你喜欢
      • 2011-01-21
      • 2013-05-02
      • 1970-01-01
      • 1970-01-01
      • 2015-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多