从sql返回的C#序列化数据表结果返回XML格式 - c#

我正在使用.net core(2.1)Web应用程序。我正在实现Web API,它将连接到SQLite DB并获取数据并返回查询结果。这是我使用的代码。

 using (var connection = new SQLiteConnection("Data Source=D:/SQL-Lite/xxxxx/test.db;Version=3;")) {
                connection.Open();

                using (var transaction = connection.BeginTransaction())
                {
                    var selectCommand = connection.CreateCommand();
                    selectCommand.Transaction = transaction;
                    selectCommand.CommandText = "SELECT * FROM Employee";
                    var ds = new DataSet();
                    var da = new SQLiteDataAdapter(selectCommand);
                    da.Fill(ds);

                    if (ds.Tables != null && ds.Tables.Count > 0)
                        response = JsonConvert.SerializeObject(ds.Tables[0]);
                }
            }

以前,我曾使用过SQL Server和ASP.NET,在序列化期间我将以行和列的格式获取JSON。如下

从sql返回的C#序列化数据表结果返回XML格式 - c#

现在,我还获得了XML中的一些元数据以及实际数据。我将在下面附加序列化数据。

{"DataTable.RemotingVersion":{"Major":2,"Minor":0,"Build":-1,"Revision":-1,"MajorRevision":-1,"MinorRevision":-1},"XmlSchema":"<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<xs:schema xmlns=\"\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\r\n  <xs:element name=\"Table\">\r\n    <xs:complexType>\r\n      <xs:sequence>\r\n        <xs:element name=\"Id\" type=\"xs:long\" msdata:targetNamespace=\"\" minOccurs=\"0\" />\r\n        <xs:element name=\"FirstName\" type=\"xs:string\" msdata:targetNamespace=\"\" minOccurs=\"0\" />\r\n        <xs:element name=\"Salary\" type=\"xs:double\" msdata:targetNamespace=\"\" minOccurs=\"0\" />\r\n        <xs:element name=\"Department\" type=\"xs:string\" msdata:targetNamespace=\"\" minOccurs=\"0\" />\r\n      </xs:sequence>\r\n    </xs:complexType>\r\n  </xs:element>\r\n  <xs:element name=\"tmpDataSet\" msdata:IsDataSet=\"true\" msdata:MainDataTable=\"Table\" msdata:UseCurrentLocale=\"true\">\r\n    <xs:complexType>\r\n      <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\" />\r\n    </xs:complexType>\r\n  </xs:element>\r\n</xs:schema>","XmlDiffGram":"<diffgr:diffgram xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" xmlns:diffgr=\"urn:schemas-microsoft-com:xml-diffgram-v1\">\r\n  <tmpDataSet>\r\n    <Table diffgr:id=\"Table1\" msdata:rowOrder=\"0\">\r\n      <Id>11</Id>\r\n      <FirstName>nithin</FirstName>\r\n      <Salary>5000</Salary>\r\n      <Department>CSE</Department>\r\n    </Table>\r\n  </tmpDataSet>\r\n</diffgr:diffgram>"}

如何避免这些其他数据,而仅在序列化期间获取实际的查询结果(行和列)?

参考方案

这应该可以解决问题:

解析类:

public class Response
{
    [JsonProperty("DataTable.RemotingVersion")]
    public object RemotingVersion { get; set; }

    public string XmlSchema { get; set; }

    public string XmlDiffGram { get; set; }
}

public class Table
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public int Salary { get; set; }
    public string Department { get; set; }
}

和用法:

var res = JsonConvert.DeserializeObject<Response>(response);
var doc = XDocument.Parse(res.XmlDiffGram);
var table = doc.Root.XPathSelectElement("tmpDataSet/Table");
var data = new XmlSerializer(typeof(Table)).Deserialize(table.CreateReader());

SOAPFaultException部署在Tomcat上时,但在GlassFish中工作正常 - java

朋友们,我一直在尝试很多,阅读了很多论坛,但无法理解为什么出现此问题。我使用契约优先方法创建了一个Jax-WS WebService。创建WSDL和XSD,然后使用wsimport工具生成其余工件,为SEI提供实现。将WebService应用程序部署到Eclipse Helios中的GlassFish(Glassfish适配器和Eclipse中安装的插件)。…

对错误消息“选择器或字段的无效XPath”的混淆 - c#

我试图更好地理解key和keyref以及如何在模式中使用它们。我想将密钥应用于类型y的部分,而不应用于类型z的部分。我对为什么看到以下错误感到困惑。 'r:B / r:part [@ type ='y']'是用于选择器或字段的无效XPath我几乎可以肯定XPath是有效的,但是只要在XPath表达式中输入谓词过滤器,我就会从Visual Studio中得到一…

Div单击与单选按钮相同吗? - php

有没有一种方法可以使div上的click事件与表单环境中的单选按钮相同?我只希望下面的div提交值,单选按钮很丑代码输出如下:<input id="radio-2011-06-08" value="2011-06-08" type="radio" name="radio_date&#…

故障排除“警告:session_start():无法发送会话高速缓存限制器-标头已发送” - php

我收到警告:session_start()[function.session-start]:无法发送会话缓存限制器-标头已发送(错误输出开始如果我将表单数据提交到其他文件进行处理,则可以正常工作。但是,如果我将表单数据提交到同一页面,则会出现此错误。请建议<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0…

CodeIgniter更新查询被执行两次 - php

我正在使用CodeIgniter 2.2。每次访问页面时,我都必须用+1更新数据库。代码可以工作,但是每次都会增加+2。示例:如果是total views=2,则在单击页面后total views应该是3,但是数据库中的值是4。我确定我在控制器中仅调用一次模型add_one_to_view_image。控制者 function view(){ $view_i…