如何从DataSet显示分层XML

时间:2014-07-21 06:30:18

标签: c# xml web-services

我正在尝试使用[WebMethod]生成XML ..

这是我在MyMethod.asmx.cs中的webmethod:

[WebMethod]
    public string GetTransactionList(string AccNo)
    {
        TransactionRepository transRep = new TransactionRepository();
        IList<Transaction> listTrans = transRep.GetTransactionList(AccNo);
        IList<Parameter> listPara = transRep.GetAllParameter();

        DataTable tblTrans = CommonDatatableMethods.ConvertToDataTable<Transaction>(listTrans, true);
        tblTrans.TableName = "transaction";
        tblTrans.Columns.Remove("SequenceNo");
        tblTrans.Columns.Remove("ID");

        /** Note: Require insert into dataset to gain custom root name**/
        DataSet dsTrans = new DataSet("Transactions"); 
        dsTrans.Tables.Add(tblTrans);

        StringWriter sw = new StringWriter();
        tblTrans.WriteXml(sw);

        if (listTrans.Count <= 0)
        {
            string emptydata = string.Empty;
            emptydata = "<Transactions><transaction>No record for " + AccNo + " within " + listPara[0].ParameterYears + " years data.</transaction></Transactions>";
            return emptydata;
        }
        else
        {
            /** Note: Need to remove all the schemas in meta tag**/
            return sw.ToString().Replace(" xsi:type=\"xs:string\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"", "").Replace(" xml:space=\"preserve\"", "");
        }
    }

但是当我点击我的网络服务上的按钮调用时,

webservice

XML只显示如下一行:

<Transactions><transaction><AccNo>ABC15279182719</AccNo><FirstName>AHMAD ALI</FirstName></transaction></Transactions>

我想要的是这样的层次结构:

<Transactions>
  <transaction>
    <AccNo>ABC15279182719</AccNo>
    <FirstName>AHMAD ALI</FirstName>
  </transaction>
</Transactions>

我该怎么做?

谢谢!

1 个答案:

答案 0 :(得分:0)

正如sa_ddam213所说,你的web方法工作正常并返回字符串值。 如果需要格式化输出结果。在visual studio中打开记事本,然后按 ctrl + k + d 进行格式化。

- SJ