【问题标题】:Formatting issue with a class generated xml in ASP.Net C#在 ASP.Net C# 中生成的类 xml 的格式问题
【发布时间】:2016-05-05 11:55:40
【问题描述】:

我下面的代码生成一个 xml 并返回生成的 xml,但当前格式不是预期的结构:

我的班级:

public class response
    {
        [StringLength(64)]
        public string reference { get; set; }

        public int responseCode { get; set; }

        [StringLength(140)]
        public string responseMessage { get; set; }

        [StringLength(32)]
        public string transactionId { get; set; }

        public List<account> accounts { get; set; }

    }



    public class account
    {
        [StringLength(64)]
        public string account_number { get; set; }

    }


 rs = "<?xml version='1.0' encoding='UTF-8'?><USSDResponse><Status>true</Status><StatusMessage>Account details returned for 08069262257</StatusMessage><SessionID>31853F5C-A1C1-2A6F-E054-8E1F65C33B15</SessionID><AccountNumber><AccountNo>0003893369</AccountNo><AccountStatus>ACCOUNT OPEN REGULAR</AccountStatus><AvailableBalance>17674.69</AvailableBalance><AccountName>IYEKE IKECHUKWU I.</AccountName><AccountCurrency>NGN</AccountCurrency><ProductName>CURRENT STAFF</ProductName></AccountNumber><AccountNumber><AccountNo>0064612613</AccountNo><AccountStatus>ACCOUNT OPEN REGULAR</AccountStatus><AvailableBalance>201132.18</AvailableBalance><AccountName>IKECHUKWU ISRAEL IYEKE</AccountName><AccountCurrency>NGN</AccountCurrency><ProductName>HIDA</ProductName></AccountNumber></USSDResponse>";

                x.LoadXml(rs);
                status = x.GetElementsByTagName("Status")[0].InnerText;
                SessionID = x.GetElementsByTagName("SessionID")[0].InnerText;


                if (status != null && status == "true")
                {
                    var accts = x.GetElementsByTagName("AccountNo");

                    var names = x.GetElementsByTagName("ProductName");

                    if (accts.Count >= 2)
                    {

                        //var AcctNo = new accounts();
                        foreach (XmlElement a in accts)
                        {
                            var acctNo = a.InnerText.Substring(0, 10);
                            accounts.Add(new account { account_number =  acctNo });


                        }




                        o.accounts = accounts;
                        o.reference = reference;
                        o.responseCode = 6;
                        o.responseMessage = "Please you can only purchase airtime in naira only and no kobo inclusive.";
                        o.transactionId = "Nil";
                        logger.Info($"Wrong amount: {amountString} including kobo entered by the user for mobile number: {msisdn}");
                        return o;
                    }
                }

结果:

<response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <reference>565695769-8490890112091</reference>
    <responseCode>6</responseCode>
    <responseMessage>Please you can only purchase airtime in naira only and no kobo inclusive.</responseMessage>
    <transactionId>Nil</transactionId>
    <accounts>
    <account><account_number>0003893369</account_number></account>
    <account><account_number>0064612613</account_number></account>
    </accounts>
    </response>

我上面的代码生成一个 xml 并返回生成的 xml 但当前格式不是预期的结构:但我希望结果与删除标记 &lt;account_number&gt;&lt;/account_number&gt; 完全一致:

    <response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <reference>565695769-8490890112091</reference>
    <responseCode>6</responseCode>
    <responseMessage>Please you can only purchase airtime in naira only and no kobo inclusive.</responseMessage>
    <transactionId>Nil</transactionId>
    <accounts>
    <account>0003893369</account>
    <account>0064612613</account>
    </accounts>
</response>

【问题讨论】:

  • 请从结果 xml 我希望标签 完全删除

标签: c# asp.net xml


【解决方案1】:

如下修改你的类结构,

public class Accounts { 
   public Accounts ()
   {
      Account = new List<string>();
   }
   public List<string> Account { get; set; }
}

public class Response {
   ...
   public Accounts Accounts { get; set; }
}

【讨论】:

  • 谢谢@codeninja.sj,这里还是有问题:
  • 谢谢@codeninja.sj 请在这里给出空对象返回值仍然存在问题:foreach (XmlElement a in accts) { var acctNo = a.InnerText.Substring(0, 10); //accounts.Add(新账户 { account = acctNo }); account.account.Add(acctNo); }
  • 您正在尝试将字符串值添加到未初始化的列表对象(即 List
  • 在 Accounts 类或代码中初始化 List 对象
  • 好的,我想我明白你在说什么,但在这种情况下不知道该怎么做。请您帮忙:此时失败:accounts.account.Add(acctNo);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-26
  • 2013-06-10
  • 1970-01-01
  • 1970-01-01
  • 2017-03-17
  • 2012-02-15
相关资源
最近更新 更多