繁体   English   中英

使用XMLSerializer将属性添加到类成员

[英]Using XMLSerializer to add attributes to a Class Member

我正在尝试编写一个使用XmlSerialzer输出xml的WCF服务。 我需要一个特定的xml输出,这就是我没有使用DataContract Seriailzer的原因。 具体来说,我正在编写一个目录服务Web(csw),它具有已定义的架构等。

我一直在尝试编写类,然后测试输出的XML。 这相当繁琐,我可能会切换到xsd实用程序。 我想知道的是我可以将xml属性添加到其他类成员中,还是将那些修饰的xmlattributes添加到根元素即类名? 与使用XDocument手动编写CML相比,似乎存在灵活性问题。 每次我需要嵌套元素(不是集合)似乎我需要创建一个新类? 那正确吗?

我需要的输出xml是:

<ows:ContactInfo> 
<ows:OnlineResource 
   xlink:href="mailto:­­enquiry@gis.nottscc.gov.uk­­"/> 
</ows:ContactInfo>

这是我的班级:

   public class ContactInfo
       {
            [XmlElement] 
            public string OnlineResource = "";        

            [XmlElementAttribute(ElementName = "OnlineResource",Namespace = "http://www.w3.org /1999/xlink")]
            public string href = "mailto:enquiry@gis.nottscc.gov.uk";

         }

输出xml如下:

<ows:ContactInfo xlink:href="mailto:enquiry@gis.nottscc.gov.uk">
<ows:OnlineResource>mailto:enquiry@gis.nottscc.gov.uk</ows:OnlineResource>
</ows:ContactInfo>

您将需要更改对象模型以实现此目的...尝试这样的事情......

 [XmlType("ContactInfo")]
 public class ContactInfo
 {
    [XmlElement("OnlineResource")]
    public OnlineResource Resource { get; set; }
 }

 [XmlType("OnlineResource")]
 public class OnlineResource
 {
     [XmlAttribute("href")]
     public string href = "mailto:enquiry@gis.nottscc.gov.uk";
 }

输出是......

<ContactInfo>
  <OnlineResource href="mailto:enquiry@gis.nottscc.gov.uk" />
</ContactInfo>

当然,你需要调整以获得你的命名空间等,但这是朝着正确的方向前进...希望它有帮助:)

是的..当你嵌套元素时,你需要一个新的类...这有道理吗? 原始如何导致嵌套值集?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM