Отображение значения узла вне области действия в XML

Я читаю значения узлов из XML-файла и хочу отобразить данные за пределами области чтения XML. Но всякий раз, когда я пытаюсь, это дает мне ошибку.

try
    {
        string filename = Server.MapPath("~") + "/Blah" + "/Blah.xml";
        XmlDocument doc = new XmlDocument();
        doc.Load(filename);

        XmlNodeList Email = doc.GetElementsByTagName("EmailTo");

        foreach (XmlNode node in Email)
        {
            XmlElement MailElement = (XmlElement)node;

            string User1= CDBInteract.formatSQLInput(MailElement.GetElementsByTagName("User1")[0].InnerText);
            string User2= CDBInteract.formatSQLInput(MailElement.GetElementsByTagName("User2")[0].InnerText);

        }

        #region Mail Sending 

        dtrecord = (DataTable)ViewState["datatable"];
        Utils util = new Utils();
        string Body = "";
        if (dtrecord.Rows.Count > 0)
        {
            DataView dv = dtrecord.DefaultView;
            dv.Sort = "FamNmae";
            DataTable Dts = dv.ToTable();


            string SUName = CDBInteract.formatInput(ReadConfigSettings.Get("SUName"));
            string SUEmail= CDBInteract.formatInput(ReadConfigSettings.Get("SUEmail"));
            string SmtpClient = CDBInteract.formatInput(ReadConfigSettings.Get("SmtpClient"));
            string EmailTo = CDBInteract.formatInput(ReadConfigSettings.Get("EmailTo"));
            string BCC= CDBInteract.formatInput(ReadConfigSettings.Get("EmailTo"));
            int m = util.SendMail(SUName , SUEmail, EmailTo, BCC, SmtpClient, "Blah", Body);

        }

Здесь я хочу, чтобы значения от User1 и User2 отображались в полях EmailTo и BCC.

Может ли кто-нибудь провести меня через это?


person Esha    schedule 25.06.2013    source источник


Ответы (3)


Не уверен насчет точного сценария, но объявление User1 и User2 вне цикла foreach может помочь? Это предполагает, что для каждого из них всегда будет одна запись.

person bazz    schedule 25.06.2013
comment
когда я это делаю, это дает мне еще одну ошибку «использование неназначенной локальной переменной» - person Esha; 25.06.2013
comment
попробуйте объявить такую ​​строку User1=; - person bazz; 25.06.2013

Попробуйте, как показано ниже, это поможет вам ..

           try
            {
                string filename = Server.MapPath("~") + "/Blah" + "/Blah.xml";
                XmlDocument doc = new XmlDocument();
                doc.Load(filename);    
                XmlNodeList Email = doc.GetElementsByTagName("EmailTo");
                dtrecord = (DataTable)ViewState["datatable"];
                foreach (XmlNode node in Email)
                {
                    XmlElement MailElement = (XmlElement)node;    
                    string User1 = CDBInteract.formatSQLInput(MailElement.GetElementsByTagName("User1")[0].InnerText);
                    string User2 = CDBInteract.formatSQLInput(MailElement.GetElementsByTagName("User2")[0].InnerText);
                    Sendemail(dtrecord, User1, User2);
                }               

            }
            catch (Exception ex)
            {
            }


       //Create a separate method for sending email
       private void Sendemail(DataTable dtrecord, string emailto, string bcc)
        {
            try
            {
                Utils util = new Utils();
                string Body = "";
                if (dtrecord.Rows.Count > 0)
                {
                    DataView dv = dtrecord.DefaultView;
                    dv.Sort = "FamNmae";
                    DataTable Dts = dv.ToTable();
                    string SUName = CDBInteract.formatInput(ReadConfigSettings.Get("SUName"));
                    string SUEmail = CDBInteract.formatInput(ReadConfigSettings.Get("SUEmail"));
                    string SmtpClient = CDBInteract.formatInput(ReadConfigSettings.Get("SmtpClient"));
                    string EmailTo = emailto;
                    string BCC = bcc;
                    int m = util.SendMail(SUName, SUEmail, EmailTo, BCC, SmtpClient, "Blah", Body);

                }
            }
            catch (Exception ex)
            {
                throw new Exception();
            }
        }
person Pandian    schedule 25.06.2013

Я, наконец, вызвал функцию в пределах области чтения. И это работает сейчас.

Спасибо всем за ответы и рекомендации.

person Esha    schedule 25.06.2013