2011-08-18 3 views
0

MySQL 데이터베이스에서 오는 데이터가있는 API XML을 만들려고합니다. 나는 아래와 같은 것을 달성하려고 노력하고있다. 나는 아래의 URL 지금은 지금 "뉴스"에서 나는 것 간단한 포인트 브라우저를 세부 사항을 참조해야하는 경우ASP.NET에서 즉시 (메모리) XML을 만들고 브라우저에 표시하기

http://api.mydomain.com/eee83d24-906b-4736-91d9-1031621b79eb 

에 브라우저와 종류를 열면

<api xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <key>eee83d24-906b-4736-91d9-1031621b79eb</key> 
    <name>API Test</name> 
    <feedState>Test</feedState> 
    <news href="http://api.mydomain.com/eee83d24-906b-4736-91d9-1031621b79eb/news/"/> 
    <comments href="http://api.mydomain.com/eee83d24-906b-4736-91d9-1031621b79eb/comments/"/> 
</api> 

나는 위의 XML을 볼 수 있습니다 ,

http://api.mydomain.com/eee83d24-906b-4736-91d9-1031621b79eb/news 

, 나는 같은 것을 볼 것입니다 수행 한 후

<news xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" state="Trial"> 
<newsListItem href="http://api.mydomain.com/eee83d24-906b-4736-91d9-1031621b79eb/news/800577419/"> 
    <id>800577419</id> 
    <publishDate>2011-08-17</publishDate> 
    <lastModifiedDate>2011-08-17</lastModifiedDate> 
    <headline>Google buys Motorola</headline> 
</newsListItem> 
<newsListItem href="http://api.mydomain.com/eee83d24-906b-4736-91d9-1031621b79eb/news/800577416/"> 
    <id>800577416</id> 
    <publishDate>2011-08-17T15:13:12</publishDate> 
    <lastModifiedDate>2011-08-17T15:14:36</lastModifiedDate> 
    <headline>Apple Macbook Air</headline> 
</newsListItem> 
</news> 

위에 표시된 모든 데이터는 MySQL 데이터베이스에서 온 것임을 기억하십시오.

어떻게하면됩니까? 모든 예제 샘플, 아이디어를 환영합니다. 누군가가 빛을 발할 수 있으면 나는 의무가있다. WCF는 갈 길입니까? 또는 일반 오래된 ASP.NET XDoc 등을 사용하여 ...?

알려 주시기 바랍니다. 엄청 고마워!

답변

0

WCF REST 서비스를 사용하고 XML을 쉽게 반환하도록 선택할 수 있습니다. Visual Studio 프로젝트 템플릿을 사용하여 프로젝트를 만들면 here입니다. 이미 MySQL 데이터베이스에서 데이터를 읽는 클래스를 정의한 경우이를 반환하고 WCF에서 사용자를 위해 일련화할 수 있습니다. 이렇게하면 XDoc/XElement를 사용하여 XML을 작성하지 않아도됩니다. 대신 DataContractSerializer 클래스 (기본 WCF 시리얼)의 ([xmlSerializerFormat 이상과 같은 속성을 지정하여) XmlSerializer 클래스를 사용하는 경우

[ServiceContract] 
[XmlSerializerFormat] 
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, ConcurrencyMode = ConcurrencyMode.Single)] 
public class APIService 
{ 
    [WebGet(UriTemplate = "{key}", ResponseFormat = WebMessageFormat.Xml)] 
    public APIData GetAPIData(string key) 
    { 
    // build apiData object from DB using "key" 
    return apiData 
    } 

    [WebGet(UriTemplate = "{key}/news", ResponseFormat = WebMessageFormat.Xml)] 
    public APINewsData GetAPINewsData(string key) 
    { 
    // build apiNewsData object from DB using "key" 
    return apiNewsData 
    } 


} 

당신은 방법에보다 효율적으로 제어 할 수 있습니다 방법 및 서비스 클래스는 같을 것 XML 모양을 반환합니다. 그러나 기본 옵션보다 느립니다. 세부 정보 : http://msdn.microsoft.com/en-us/library/ms733901.aspx

+0

감사합니다. XDoc 및 XElement와 함께 RouteTables를 사용하여 XML을 만들었습니다. WCF는 우리가 가진 응용 프로그램 구조에 따라 약간의 한계점이 있었으므로 그렇게하기를 원하지 않았습니다. 그러나 응답을 감사하십시오. – emp51302