我正在尝试编写一个使用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>
答案 0 :(得分:2)
您需要更改对象模型才能实现此目的......尝试这样的事情......
[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>
当然,你需要调整以获得你的命名空间等,但这是朝着正确的方向前进...希望它有所帮助:)
是的..当你嵌套元素时,你需要一个新的类...这有意义吗?原始如何导致嵌套值集?