XElement.Parse 不允许做一个循环



我的程序使用XML构建HTML文件。(我使用system.xml,使用system.xml.linq(。我想以这种方式保留代码的形式,但是此解决方案不起作用,因为XElement.Parse不允许我创建一个循环。谁能帮忙?

StringBuilder table_dynamic10 = new StringBuilder();
using (SqlConnection conn = new SqlConnection(conString))
{
    string query = string.Format("{0}{1}'", "SELECT [VALUE1],[VALUE2] FROM ...");
    using (SqlCommand cmd = new SqlCommand(query, conn))
    {
        conn.Open();
        using (SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection))
        {
            while (reader.Read())
            {
                table_dynamic10.Append("<tr><td>" + reader["VALUE1"].ToString() + "</td><td>" + reader["VALUE2"].ToString() + "</td></tr>");
            }
        }
    }
}
var xDocument = new XDocument(
                new XDocumentType("html", null, null, null),
                new XElement("html",
                    new XElement("head"),
                    new XElement("body",
                        XElement.Parse(table_dynamic10.ToString()))))

而不是建立字符串,我建议直接建立XML:

var body = new XElement("body");
using (SqlConnection conn = new SqlConnection(conString))
{
    string query = string.Format("{0}{1}'", "SELECT [VALUE1],[VALUE2] FROM ...");
    using (SqlCommand cmd = new SqlCommand(query, conn))
    {
        conn.Open();
        using (SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection))
        {
            while (reader.Read())
            {
                body.Add(new XElement("tr",
                    new XElement("td", reader["VALUE1"]),
                    new XElement("td", reader["VALUE2"])));
            }
        }
    }
}
var document = new XDocument(
    new XDocumentType("html", null, null, null),
    new XElement("html", new XElement("head"), body));

请注意,这意味着数据库中的值将被视为值,并以适当的引用等,而不是被解析为XML。因此,如果您在数据库中具有foo & bar的值,那就可以了,最终在XML文档中以foo &amp; bar

相关内容

最新更新