簡體   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