代码之家  ›  专栏  ›  技术社区  ›  hoang

如何使用XmlSerializer生成标记前缀

  •  16
  • hoang  · 技术社区  · 14 年前

    我想使用XmlSerializer生成以下内容:

    <atom:link href="http://dallas.example.com/rss.xml" rel="self" type="application/rss+xml" />
    

    所以我尝试向元素添加一个名称空间:

    [...]
    
        [XmlElement("link", Namespace="atom")]
        public AtomLink AtomLink { get; set; }
    
    [...]
    

    但产出是:

    <link xmlns="atom" href="http://dallas.example.com/rss.xml" rel="self" type="application/rss+xml" />
    

    那么,生成前缀标签的正确方法是什么呢?

    2 回复  |  直到 8 年前
        1
  •  34
  •   Oded    14 年前

    首先,Atom名称空间通常是:

    xmlns:atom="http://www.w3.org/2005/Atom"
    

    为了让你的标签使用 atom 名称空间前缀,需要用它标记属性:

    [XmlElement("link", Namespace="http://www.w3.org/2005/Atom")]
    public AtomLink AtomLink { get; set; }
    

    你还需要告诉 XmlSerializer 使用它(感谢@Marc Gravell):

    XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
    ns.Add("atom", "http://www.w3.org/2005/Atom");
    XmlSerializer xser = new XmlSerializer(typeof(MyType));
    xser.Serialize(Console.Out, new MyType(), ns);
    
        2
  •  0
  •   Community taleinat    7 年前