powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / WCF GET (XML Response)
16 сообщений из 41, страница 2 из 2
WCF GET (XML Response)
    #36629241
Фотография tsyselsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeiKtsyselsky,

но это не подходит.
видишь там

Код: plaintext
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">

вот это не должно быть в xml ответе. основное условие сериализации.

Я так понимаю смущает присутствие атрибута xmlns="..."


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
[<ServiceContract>]
type service() =
    
    let xn s = XName.op_Implicit(s)
    let xe (n, v:string) = new XElement(xn n, v)
    
    [<OperationContract; WebGet(UriTemplate="/xml/{a}/{b}")>]
    member x.getXml(a, b) = new XElement(xn "Responce", xe("x", a), xe("y", b))


...
Рейтинг: 0 / 0
WCF GET (XML Response)
    #36629288
WCF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF
Гость
Спасибо за ответы, но всё в пустую.
Ну не врубается никто на F#!
Это пока не общепринятый язык.
...
Рейтинг: 0 / 0
WCF GET (XML Response)
    #36629313
Фотография tsyselsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WCFСпасибо за ответы, но всё в пустую.
Ну не врубается никто на F#!
Это пока не общепринятый язык.

Пардон.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
namespace core.wcf {
    [ServiceContract]
    public class service{

        private XElement xe(string n, string v) { return new XElement(n, v); }

        [OperationContract, WebGet (UriTemplate="/xml/{a}/{b}")]
        public XElement getXml (string a, string b) {
            return new XElement("Responce", this.xe ("x", a), this.xe("y", b));                 
        }
    }
}

...
Рейтинг: 0 / 0
WCF GET (XML Response)
    #36629504
Фотография tsyselsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WCFСпасибо за ответы, но всё в пустую.
Ну не врубается никто на F#!
Это пока не общепринятый язык.

Хм, похоже C# тоже не "в масть".
...
Рейтинг: 0 / 0
WCF GET (XML Response)
    #36629518
Фотография Хопа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tsyselskyХм, похоже C# тоже не "в масть".
В смысле?
...
Рейтинг: 0 / 0
WCF GET (XML Response)
    #36629542
Фотография tsyselsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХопаtsyselskyХм, похоже C# тоже не "в масть".
В смысле?

Это я в ответ на реплику о F# ...

Поскольку реакции на C# код не последовало,
наверное мое предложение сконструировать XElement
не совсем то что было нужно вопрошающим жентельменам.
...
Рейтинг: 0 / 0
WCF GET (XML Response)
    #36629547
WCF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF
Гость
Ну ясно. Либо Stream, либо XElement. Класс видимо никак не выдать в ответе.
...
Рейтинг: 0 / 0
WCF GET (XML Response)
    #36629618
Фотография tsyselsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WCFНу ясно. Либо Stream, либо XElement. Класс видимо никак не выдать в ответе.

Вы имеете ввиду, сериализованный в xml (без аттрибута xlmns="...", ) .net класс ?
Если да, то ниже приведенный код, отдает мне вот такой вот xml

Код: plaintext
1.
2.
3.
- <Responce>
      <x> 2 </x> 
      <y> 3 </y> 
  </Responce>

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
namespace core.wcf {
    [ServiceContract] 
    public class service{

        public class data {
            public string x;
            public string y;
        }

        private XElement xe(string n, string v) {
            return new XElement(n, v);    
        }

        [OperationContract, WebGet(UriTemplate="/xml/{a}/{b}")]
        public string getXml (string a, string b) {
            data d = new data { x = a, y = b };
            DataContractSerializer dcs = new DataContractSerializer(typeof(data));
            using (Stream ms = new MemoryStream()) {
                dcs.WriteObject(ms, d);
                ms.Seek( 0 , SeekOrigin.Begin);
                XmlReader xr = XmlReader.Create(ms);
                XNode xn = XElement.ReadFrom(xr);
                return xn.ToString();
            }            
       }
    }
}
...
Рейтинг: 0 / 0
WCF GET (XML Response)
    #36629626
WCF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF
Гость
я имел в виду написать так с WCF GET видимо нельзя:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
[DataContract]
public class Data {
            public string x;
            public string y;
        }


[OperationContract, WebGet(UriTemplate="/xml/{a}/{b}")]
        public Data getData (string a, string b) {

...
Рейтинг: 0 / 0
WCF GET (XML Response)
    #36629636
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Клиенты WCF Get использует аякс для вызова методов: поэтому либо строка, либо xml, либо json.
...
Рейтинг: 0 / 0
WCF GET (XML Response)
    #36629637
Фотография tsyselsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я понял, DataContractAttribute, в любом случае, включает в ответ неймспейс (дефолтный или кастомный).
Лично я нахожу присутствие даного атрибута в xml документе логичным и полезным.
Но если, по какой то причине xmlns ну ни как не монтируется в схему,
у нас есть на выбор несколько вариантов.
...
Рейтинг: 0 / 0
WCF GET (XML Response)
    #36629663
Фотография tsyselsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу пардона, вышеприведенный код код кастомного сериалайзера не совсем корректный.
Вот работающий C# код, возвращающий XElement (но также с неймспесом).

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
namespace core.wcf {
      
    public class responce {
                public string x;
                public string y;
            }      

    [ServiceContract] 
    public class service{

        [OperationContract, WebGet(UriTemplate="/xml/{a}/{b}")]
        public XElement getXml (string a, string b) {
            responce d = new responce { x = a, y = b };
            DataContractSerializer dcs = new DataContractSerializer(typeof(responce));
            using (Stream ms = new MemoryStream()) {
                dcs.WriteObject(ms, d);
                ms.Seek( 0 , SeekOrigin.Begin);
                XmlReader xr = XmlReader.Create(ms);
                xr.MoveToContent();
                return XElement.ReadFrom(xr) as XElement;             
            }            
        }
    }
}
...
Рейтинг: 0 / 0
WCF GET (XML Response)
    #36629669
Фотография tsyselsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этот код на F# отрезает все атрибуты и неймспейсы из входящего XElement'a

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
module xmlns 

open System
open System.Xml
open System.Xml.Linq

let rec remove (x:XElement) =
    let xn s = XName.op_Implicit s 
    match x.HasElements with
    | false -> new XElement(xn (x.Name.LocalName), x.Value)
    | _ -> new XElement(xn (x.Name.LocalName), x.Elements() |> Seq.map remove)

если подключить этот модуль и предидущий return изменить на
Код: plaintext
1.
2.
...
return xmlns.remove(XElement.ReadFrom(xr) as XElement);

то в итоге должон быть чистый xml
...
Рейтинг: 0 / 0
WCF GET (XML Response)
    #36629773
Фотография Хопа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buredКлиенты WCF Get использует аякс для вызова методов: поэтому либо строка, либо xml, либо json.

Stream тоже вполне ничего.
...
Рейтинг: 0 / 0
WCF GET (XML Response)
    #36630077
Фотография tsyselsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Клиент, в итоге , получит XML или JSON
Топикстартер, и все учавствовавшие пытались изменить стандартное поведение
сериалайзера, или точнее поучавствовать в конструировании XML вывода.
Не более того.

Код: plaintext
[WebGet(ResponseFormat = WebMessageFormat.Xml)] 

...
Рейтинг: 0 / 0
WCF GET (XML Response)
    #36631206
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tsyselskyКлиент, в итоге , получит XML или JSON
Топикстартер, и все учавствовавшие пытались изменить стандартное поведение
сериалайзера, или точнее поучавствовать в конструировании XML вывода.
Не более того.

Код: plaintext
[WebGet(ResponseFormat = WebMessageFormat.Xml)] 


По идее мессадж инспектором можно изъять лишнее. Я тут где-то постил пример, но только не с WebGet. Но, думаю, можно.
...
Рейтинг: 0 / 0
16 сообщений из 41, страница 2 из 2
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / WCF GET (XML Response)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]