在 C# 中使用 SQL Server 2014 保存和检索 XML 数据

Posted

技术标签:

【中文标题】在 C# 中使用 SQL Server 2014 保存和检索 XML 数据【英文标题】:saving and retrieving XML data using SQL server 2014 in C# 【发布时间】:2016-03-16 06:38:46 【问题描述】:

我的 XML 数据应该如下所示

<?xml version="1.0" standalone="yes"?>
<DocumentElement>
<XMLData>
<TUReportData><BureauResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RawData xmlns="https://secure.transunion.co.za/TUBureau" />
<ResponseStatus xmlns="https://secure.transunion.co.za/TUBureau">Success</ResponseStatus>

但不是你的代码将 &lt; 和 > 转换为 &amp;gt;

从数据库代码中检索 xml

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ICDBConnectionString"].ConnectionString);
        conn.Open();

        string SQL = "Select TUReportData from TUReport WHERE ConsumerID = @ConsumerID";

        SqlCommand cmd = new SqlCommand(SQL, conn);
        cmd.Parameters.Add(new SqlParameter("@ConsumerID", txtIDNumber.Text));

        SqlDataAdapter adapter = new SqlDataAdapter(cmd);

        DataTable dt = new DataTable();
        adapter.Fill(dt);

        dt.TableName = "XMLData";
        dt.ToString();
        dt.WriteXml("C:/inetpub/wwwroot/TUWebServiceCaller/Log/temp.xml");

// Getting file path    
        string strXSLTFile = Server.MapPath("styles/style.xslt");
        string strXMLFile = Server.MapPath("Log/temp.xml");

        // Creating XSLCompiled object    
        XslCompiledTransform objXSLTransform = new XslCompiledTransform();
        objXSLTransform.Load(strXSLTFile);

        // Creating StringBuilder object to hold html data and creates TextWriter object to hold data from XslCompiled.Transform method    
        StringBuilder htmlOutput = new StringBuilder();
        TextWriter htmlWriter = new StringWriter(htmlOutput);

        // Creating XmlReader object to read XML content    
        XmlReader reader = XmlReader.Create(strXMLFile);

        // Call Transform() method to create html string and write in TextWriter object.    
        objXSLTransform.Transform(reader, null, htmlWriter);
        Results.InnerHtml = htmlOutput.ToString();

        // Closing xmlreader object    
        reader.Close();

这是完整的代码,但问题是 xml 代码,我需要在传递标签之前将其转换为样式

【问题讨论】:

您的问题是什么? your code is converting 是什么意思?你的代码在哪里? 您是否从存储过程接收 xml?我通常做的就是把这个xml放到一个对象中。 我编辑了问题以获得代码 【参考方案1】:

当你保存它时,xml 被编码,所以当你把它带回来时运行。

 string html = HttpUtility.HtmlDecode(encodedXMLString);

我不完全知道这里的问题是什么,但我希望这会有所帮助。

【讨论】:

我在上面的代码中将代码 sn-p 放在哪里 尝试将阅读器的每一行读入您的字符串生成器。你应该可以做 foreach(var line in reader.ReadLine()) htmlOutput.Append(line) 或者将Results.InnerHtml设置为HttpUtility.Html.Decode(htmlOutput) 所以 Results.InnerHtml = HttpUtility.HtmlDecode(htmlOutput)。我希望这有帮助。我最近在这个确切的问题上遇到了麻烦。

以上是关于在 C# 中使用 SQL Server 2014 保存和检索 XML 数据的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 中的 tinyint 到 C# 中的字节

C# 中的日期时间与 SQL Server 中的 SQL 和 GETDATE()

从 C# 到 SQL Server 的精度损失

使用c#将表从Sql Server导出到PDF文件

跟踪在 C# 应用程序或 SQL Server 中对 SQL Server 进行更改的人员

使用 C# 对 SQL Server OLAP 多维数据集进行单元测试