我正在尝试创建一个包含来自MySQL数据库的数据的API 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>
如果我打开浏览器并输入以下网址
,我可以看到上面的XMLhttp://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 :(得分:0)
您可以选择使用WCF REST服务并轻松返回XML。只需使用找到here的Visual Studio项目模板创建项目。 如果您已经定义了从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