2011-08-18 56 views
0

我正在嘗試創建一個具有來自MySQL數據庫的數據的API XML。我正在努力達到像下面這樣的東西。在ASP.NET中動態創建XML(內存)並在瀏覽器中顯示

<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 

現在,如果我現在需要看到內「新聞」細節我會簡單一點我的瀏覽器中打開我的瀏覽器和類型,

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。 的方法和服務類看起來是這樣的:

[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 
    } 


} 

如果您使用XmlSerializer類(通過指定[xmlSerializerFormat]屬性像上面),而不是DataContractSerializer的類(默認WCF序列化),你可以對如何更好地控制返回XML外觀。但它比默認選項慢。更多細節:http://msdn.microsoft.com/en-us/library/ms733901.aspx

+0

謝謝。我使用RouteDables與XDoc和XElement來創建XML。根據我們的應用程序結構,WCF有一些侷限性,所以不希望這樣做。但欣賞的迴應。 – emp51302

相關問題