Получение «ArrayOf», предшествующего массивам объектов ActiveRecord в XML-представлении, возвращаемом веб-службой asp.net с Mono - PullRequest
3 голосов
/ 18 ноября 2009

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>

Мне нравится простота представления объектов данных в виде веб-сервиса с одной строкой кода, но я не могу получить массив сериальных объектов Subtitle без префикса "ArrayOf". Мои поездки через Google указали мне на возможности WCF, которые недоступны в Mono, или на сериализацию вручную, которой я стараюсь избегать.

Есть ли простой способ представить массив объектов Subtitle как <Subtitles> в Mono?

1 Ответ

1 голос
/ 29 октября 2010

для записи: я использую грязную уловку. В моем примере 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...