[英]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.