获取“ArrayOf”前缀为asp.net webservice使用Mono返回的XML表示形式的ActiveRecord对象数组

时间:2009-11-18 20:49:03

标签: asp.net web-services serialization mono

ASP.net网络方法:

[WebMethod()]
public Data.Subtitle[] GetAll()
{
    return Data.Subtitle.FindAll();
}

这是Subtitle类:

[ActiveRecord("Subtitle")]
public class Subtitle : ActiveRecordBase<Subtitle>
{
    [PrimaryKey(PrimaryKeyType.Assigned)]
    public int SubId {get;set;}

    [Property()]
    public int SubStreamId {get;set;}

    [Property()]
    public string SubTimeStart {get;set;}

    [Property()]
    public string SubTimeEnd {get;set;}

    [Property()]
    public string SubText {get;set;}

    public Subtitle () { }
}

这是XML的回归:

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfSubtitle xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
  <Subtitle>
    <SubId>862</SubId>
    <SubStreamId>1</SubStreamId>
    <SubTimeStart>00:01:04.4450000</SubTimeStart>
    <SubTimeEnd>00:01:08.2450000</SubTimeEnd>
    <SubText>Wikus van de Merwe
MNU Alien Affairs

</SubText>
  </Subtitle>
  <Subtitle>
    <SubId>863</SubId>
    <SubStreamId>1</SubStreamId>
    <SubTimeStart>00:02:11.3430000</SubTimeStart>
    <SubTimeEnd>00:02:14.8430000</SubTimeEnd>
    <SubText>Sarah Livingstone
Sociologist, Kempton Park University

</SubText>
</Subtitle>

我喜欢使用一行代码将数据对象呈现为web服务的简单性,但我似乎无法在没有“ArrayOf”前缀的情况下获取序列化的Subtitle对象数组。我的Google之旅已经向我指出了Mono上没有的WCF设施,或者我试图避免的手动序列化。

是否有一种简单的方法可以在Mono中将字幕对象数组显示为<Subtitles>

1 个答案:

答案 0 :(得分:1)

用于记录:我使用污垢技巧,在我的示例中,xml被序列化然后被解析为字符串,所以我管理一个包含xml的字符串

var arr = myStr.Split(new char[] {'\n'}, StringSplitOptions.None);
var arr2 = "";
for (int i = 2; i < arr.Count()-1;i++ )
{
    arr2 += arr[i];
}

它剪切了第0行(xml),第1行(arrayofsubtitle)和最后一行(/ arrayofsubtitle):

: - 3