我可以组合来自C#变量和XML的值

时间:2017-03-31 06:48:59

标签: c# xml

我有一个要求,即电子邮件正文应包含文本框输入的值。我已经在xml格式的电子邮件正文中预定义了内容,但是文本框中输入的值应附加到xml&使用此输入值,整个电子邮件正文应显示在占位符中。

<?xml version="1.0" encoding="UTF-8"?>
<EMAIL> 
  <ADDR To="abcd@abcd.com" Sub="Email body"></ADDR>  
  <BODY>Data available at &lt;br /&gt;**url&lt;br /&gt;&lt;br /&gt;Thanks</BODY>
</EMAIL>

在C#中,

 public void EmailDefaultValue(string url)
    {
        XElement xmlMap = XElement.Load(HttpContext.Current.Server.MapPath("~/Config Files/EmailBody.xml"));
        txtToEmail.Value = (from item in xmlMap.Elements("ADDR")
                            select item.Attribute("To").Value).Single();
        txtSubject.Value = (from item in xmlMap.Elements("ADDR")
                            select item.Attribute("Sub").Value).Single();
        txtEmailBody.Text =string.Format((from item in xmlMap.Elements("BODY")
                             select item.Value).Single(),url);
    }
输出中的

: 显示文本**url而不是读取url变量值并附加。 我在哪里错过了什么?

2 个答案:

答案 0 :(得分:0)

需要由String.Format()替换的字符串部分必须采用特定格式,例如{0}。将XML模板中的**url替换为{0}

<BODY>Data available at &lt;br /&gt;{0}&lt;br /&gt;&lt;br /&gt;Thanks</BODY>

然后你当前的代码应该工作。快速测试:https://dotnetfiddle.net/U5LHep

答案 1 :(得分:0)

尝试下面的一个。

[XmlRoot]
public class EMAIL
{
    [XmlElement("ADDR")]
    public ADDR ADDR { get; set; }
    [XmlElement("BODY")]
    public string BODY { get; set; }
}

public class ADDR
{
    [XmlAttribute("To")]
    public string To { get; set; }
    [XmlAttribute("Sub")]
    public string Sub { get; set; }
}

static void Main(string[] args)
{            
        var fileName = @"your xml file here";
        var xmlResult = System.IO.File.ReadAllText(fileName);

        XmlSerializer serializer = new XmlSerializer(typeof(EMAIL));
        using (TextReader reader = new StringReader(xmlResult))
        {
            EMAIL result = (EMAIL)serializer.Deserialize(reader);
            Console.WriteLine(result.ADDR.Sub);
            Console.WriteLine(result.ADDR.To);
            Console.WriteLine(result.BODY);
        }

        Console.Read();
}

你的输出

enter image description here