我有一個沒有問題的web服務(asmx在iis中運行)。唯一的問題是客戶端對XML輸出非常嚴格。目前的格式如下:Xml從Webservice輸出添加一個Xml元素C#
<ArrayOfVenda xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://213.63.189.121/webservicenos">
<venda>
<id>x</id>
<contact_moment>x</contact_moment>
</venda>
<venda>
<id>y</id>
<contact_moment>y</contact_moment>
</venda>
</ArrayOfVenda>
它應該是:
<ArrayOfVenda xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://213.63.189.121/webservicenos">
<root>
<venda>
<id>x</id>
<contact_moment>x</contact_moment>
</venda>
<venda>
<id>y</id>
<contact_moment>y</contact_moment>
</venda>
</root>
</ArrayOfVenda>
所以,唯一的事情是添加有包含列表文達的名字根的XMLElement。我在添加這個元素時遇到了麻煩,我真的不知道如何在代碼中執行它。這裏是:
[WebMethod]
[return: System.Xml.Serialization.XmlElementAttribute("venda")]
public List<venda> getListaVendas(string dt_min, string dt_max)
{
List<venda> objVendaList = new List<venda>();
using (SqlConnection con = new SqlConnection(@"Data Source=server;Initial Catalog=db;User ID=user;password=password"))
{
using (SqlCommand cmd = new SqlCommand("SELECT * FROM dbo.vcnosadesoes_getlistavendas where contact_moment >='" + dt_min + "' AND contact_moment <DATEADD(dd, 1, '" + dt_max + "')", con))
{
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
var objVenda = new venda();
objVenda.id = dr["id"].ToString();
objVenda.contact_moment = dr["contact_moment"].ToString();
objVenda.nome = dr["nome"].ToString();
objVenda.pacote = dr["pacote"].ToString();
objVenda.telefone = dr["telefone"].ToString();
objVenda.codigo_wc = dr["codigo_wc"].ToString();
objVendaList.Add(objVenda);
}
dr.Close();
}
}
return objVendaList;
}
任何想法什麼是最好的方法來添加此元素? PS:我知道。我必須更改SQL查詢,因爲SQL注入之前,我會達到它,讓它住不用擔心。此線:
[return: System.Xml.Serialization.XmlElementAttribute("venda")]
可能無所事事,我只是把它放在一些測試,從來沒有評論出來。
更新:所以客戶端的腳本仍然返回錯誤。之後看調試小時,我發現了它需要的是這樣的輸出:
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://213.63.189.121/webservicenos">
<venda>
<id>x</id>
<contact_moment>x</contact_moment>
</venda>
<venda>
<id>y</id>
<contact_moment>y</contact_moment>
</venda>
</root>
非常感謝你,它完美的工作! –
此外,如果我想添加到輸出頭: <?XML版本=「1.0」編碼=「UTF-8」?> 是否有任何方式補充的是? (這只是檢查不是一個大問題) –
是的,我已經修好了。我注意到壽,它的返回我 。不需要,它使驗證失敗。我可以在xml輸出中抑制這個值嗎? –