我有一個存儲過程在Web服務Web方法中使用存儲過程返回數據表。然後,當我查看返回的XML的源代碼(在瀏覽器窗口中看起來不錯)時,它將返回<
和>
圍繞XML節點。C#.net Web服務Web方法在查看源代碼中返回<和>
我已經看過了類似的問題,我有使用的HTMLEncode或HTMLDecode無濟於事嘗試。
這是我的Web服務代碼。
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using System.Web;
using System.Web.Services;
using System.Xml;
namespace DAL
{
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class iPhoneWebServices : System.Web.Services.WebService
{
[WebMethod(Description="Return All Current Makes")]
public string ReturnMakes()
{
// Get All Records with NAME Parameter
DataTable dataTable = DataAccessLayer.ExecuteDataTable("ipa_ReturnMakes");
StringBuilder sbrXML = new StringBuilder();
if (dataTable.Rows.Count > 0)
{
sbrXML.AppendLine("<MakeList>");
foreach (DataRow objRow in dataTable.Rows)
{
sbrXML.AppendLine("<Make><MakeID>[makeID]</MakeID><MakeName>[makeName]</MakeName></Make>");
sbrXML.Replace("[makeID]", objRow["MakeID"].ToString());
sbrXML.Replace("[makeName]", objRow["MakeName"].ToString());
}
sbrXML.AppendLine("</MakeList>");
}
else
{
// no data
sbrXML.AppendLine("<makeList>");
sbrXML.AppendLine("no data");
sbrXML.AppendLine("</makeList>");
}
return sbrXML.ToString();
}
//Return Models From Make ID
[WebMethod(Description="Returns Models From Make ID")]
public string ReturnModels(int MakeID)
{
SqlParameter[] param = new SqlParameter[1];
param[0] = new SqlParameter("MakeID", SqlDbType.Int);
param[0].Value = MakeID;
// Get All Records with NAME Parameter
DataTable dataTable = DataAccessLayer.ExecuteDataTable("ipa_ReturnModelsForMake", param);
StringBuilder sbrXML = new StringBuilder();
if (dataTable.Rows.Count > 0)
{
sbrXML.AppendLine("<ModelList>");
foreach (DataRow objRow in dataTable.Rows)
{
sbrXML.AppendLine("<Model><ModelID>[modelID]</ModelID><ModelName>[modelName]</ModelName></Model>");
sbrXML.Replace("[modelID]", objRow["ModelID"].ToString());
sbrXML.Replace("[modelName]", objRow["ModelName"].ToString());
}
sbrXML.AppendLine("</ModelList>");
}
else
{
// no data
sbrXML.AppendLine("<ModelList>");
sbrXML.AppendLine("no data");
sbrXML.AppendLine("</ModelList>");
}
return sbrXML.ToString();
}
}
}
什麼它返回在Web方法查看源代碼 「ReturnModels」
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/"><ModelList>
<Model><ModelID>20945</ModelID><ModelName>Anglia</ModelName></Model>
<Model><ModelID>11006</ModelID><ModelName>Transit</ModelName></Model>
<Model><ModelID>21952</ModelID><ModelName>Zodiac Mark III</ModelName></Model>
</ModelList>
</string>
它正確顯示在瀏覽器窗口:
<string>
<ModelList>
<Model><ModelID>20945</ModelID><ModelName>Anglia</ModelName></Model>
<Model><ModelID>15881</ModelID><ModelName>C-Max</ModelName></Model>
<Model><ModelID>20303</ModelID><ModelName>Capri</ModelName></Model>
<Model><ModelID>11006</ModelID><ModelName>Transit</ModelName></Model>
<Model><ModelID>21952</ModelID><ModelName>Zodiac Mark III</ModelName></Model>
</ModelList>
</string>
剛需以便將瀏覽器窗口中顯示的內容也顯示在視圖源中。
感謝您的幫助和提前的時間!
如果你想輸出XML,那麼你真的應該創建XML,不只是自己寫的吧。 – Prisoner 2011-03-20 20:14:35
@Prisoner你是完全正確的。替換不是製作XML文檔的方式。 Xelement,ToArray,ToList應該被使用或者天堂禁止String.Format。 – Jeremy 2011-03-20 20:54:45