如果返回格式为 xml,如何删除 Web api 中的模式节点?

2024-01-03

我有一个 Web api 方法,它采用 format 作为参数,提供返回 xml 和 json。方法返回的数据类型是 DataTable。在 json 格式中,一切看起来都很好,但在 xml 格式中,数据表的架构和 xml 节点中的一些其他属性也返回。如何返回仅包含数据表数据的简单xml?另外,我在WebApiConfig中使用QueryStringMapping。

这是WebApiConfig代码

public static void Register(HttpConfiguration config)
{
    config.MapHttpAttributeRoutes();
    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{action}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );
    config.Formatters.JsonFormatter.MediaTypeMappings.Add(new QueryStringMapping("format", "json", new MediaTypeHeaderValue("application/json")));
    config.Formatters.XmlFormatter.MediaTypeMappings.Add(new QueryStringMapping("format", "xml", new MediaTypeHeaderValue("application/xml")));
    GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;
}

这是控制器方法的伪代码

[BasicAuthentication]
[Route("api/{tablename}")]
[HttpGet]
public IHttpActionResult Get(string tablename, string orders = "", int limit = 100)
{
    DataTable dt = new DataTable{TableName="resource"};
    //... Database connection and getting result
    return Ok(new Response{ limit = limit,count=dt.Rows.Count, data =dt });
}

和响应模型

public class Response
{
    public int limit { get; set; }
    public int count { get; set; }
    public DataTable data { get; set; }

}

返回的xml示例

   <Response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <limit>1</limit>
    <count>1</count>
    <data>
    <xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="NewDataSet">
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="resource" msdata:UseCurrentLocale="true">
    <xs:complexType>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="resource">
    <xs:complexType>
    <xs:sequence>
    <xs:element name="ID" type="xs:long" minOccurs="0"/>
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    </xs:choice>
    </xs:complexType>
    </xs:element>
    </xs:schema>
    <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
    <DocumentElement>
    <resource diffgr:id="resource1" msdata:rowOrder="0">
    <ID>1</ID>
    </resource>
    </DocumentElement>
    </diffgr:diffgram>
    </data>
    </Response>

综上所述,我只想返回数据节点中的资源节点,没有任何属性。


发布这个问题后我找到了答案。问题是数据表对象的 XmlSchema。编写自定义数据表 xml 序列化程序,并在 IXmlSerialized 接口的 GetSchema 中返回 null 并覆盖它。自定义序列化器是there. https://stackoverflow.com/a/14591188/5088613

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果返回格式为 xml,如何删除 Web api 中的模式节点? 的相关文章

  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • 在 Delphi 中使用 XML(将特定数据返回到变量)

    过去几天我一直在尝试使用 Delphi 2010 和 MSXML 我是一个极端的新手 需要一点指导 var MemoryStream TMemoryStream XMLPath String sName String XMLDoc vari
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • XSD 嵌套元素

  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l

随机推荐

  • 使用 SUM(something) AS 时字段列表中的未知列

    我正在使用以下查询从表中获取 2 列的总和 SELECT a user b user SUM a post b post AS common p count SUM a option b option AS common r count c
  • 如何更改 apt-get 安装目录[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 apt get的默认安装目录是 opt 我可以将其更改为其他目录吗 我能想到的最好的方法是使用符号链接 请注意 并非所有程序都安装到同一目
  • 使用 jQuery 对 div 进行排序

    I m trying to sort divs using jQuery it does sort but does not seems sorting properly 这是申请后的样子sort here is HTML片段 div cl
  • C - 如何更改 Ncurses 中的字体大小?

    到底还有吗 我似乎找不到任何执行此操作的函数 我尝试用谷歌搜索这个但找不到任何东西 我不相信这是可能的 终端不适合做这样的事情 它旨在有时以不同的颜色显示文本 如果你想改变字体大小 你需要打开一个窗口并绘制它 这实际上可能不是正确的术语 图
  • Java中两个日期相减[重复]

    这个问题在这里已经有答案了 可能的重复 计算两个 Java 日期实例之间的差异 https stackoverflow com questions 1555262 calculating the difference between two
  • 当有人说 Perl 是一种“富有表现力的语言”时,这是什么意思?

    什么是表达性语言 当有人说 Perl 是一种富有表现力的语言时 这是什么意思 表达性 语言是一种允许您轻松地用代码表达逻辑概念的语言 人们通常称 Perl 富有表现力 因为它允许您使用许多不同的方法来表达特定的概念 因此在这方面它非常灵活
  • Java Jackson org.codehaus.jackson.map.exc.UnrecognizedPropertyException

    我正在使用 Jackson 将 JSON 响应绑定到我的类 一切都运行良好 除非我的 JSON 响应中的字段多于我的类定义的字段 我希望 Jackson 忽略我的 JSON 响应中不存在的字段 这是由于未来版本的兼容性 如果我添加一个新字段
  • 领域驱动设计:如何访问聚合根的子级

    如果我有一个订单类作为聚合根和 1000 个订单项 如何仅加载 1000 个订单项中的一个 据我了解 订单项只能通过 Order 类访问 并且具有 本地 标识 我是否仍会在 OrderRepository 中创建像 GetLineItemB
  • 如何使用 JPA 2.1 属性 javax.persistence.schema- Generation.database.action?

    允许的值javax persistence schema generation database action are 无 没有任何作用 create 仅在应用程序第一次启动时有效 因为如果创建了已存在的模式 则由于大多数数据库 例如 de
  • 如何使用 SpringBootTest 启用 JPA 审计?

    我想为我的 RestAPI 端点编写集成测试 但我正在努力解决 EnableJpaAuditing 我希望 Spring 审核我的一些实体 因此我创建了以下配置类 Configuration EnableJpaAuditing public
  • Oracle 减去天和分钟

    我想从 sysdate 中减去 X 天和 X 分钟 其中天和分钟是作为输入参数的整数 例如 10天和5分钟 我发现很多例子可以减去分钟或小时 但不能减去天和分钟的组合 select sysdate 5 24 60 from dual wil
  • 无法赋值:“self”是不可变的

    我试图从 NSMutableURLRequest 子类中的自定义 init 返回一个实例 class Request NSMutableURLRequest func initWith endPoint String methodType
  • 搜索 Gray Log 2 API 或查询 ElasticSearch 的方法

    我有一个关于灰色原木2 http graylog2 org 在公司中 我工作的所有系统都向具有预定义流的灰色日志服务器报告异常 我需要构建一个外部仪表板 它从不同的流中检索数据 我还没有找到任何 Gray Log 2 API 可用于此目的
  • QFileDialog 调用时关闭窗口

    这是我第一次在这里提问 所以请原谅我的错误 所以我的问题是当我运行我的程序时它工作正常 但一旦我单击 搜索 程序就会关闭 I use self pushButton 5 cicked connect run 调用运行的函数 openfile
  • 将回形针附件的所有样式复制到新对象 (S3)

    我有一个使用回形针处理图像的模型 当图像上传时 会进行一些 JavaScript 裁剪的预览 然后根据所选裁剪生成缩略图和预览尺寸 在 S3 上总共给我们 3 张图像 原始图像 预览 来自用户选择的裁剪 拇指 来自用户选择的裁剪 附件模型中
  • 如何向可变参数添加参数? [复制]

    这个问题在这里已经有答案了 假设我有方法 void m1 Object objs m2 added objs and void m2 Object objs for Object o objs do something with Objec
  • LibGDX - 缩放 Scene2d 舞台时如何平滑 actor 可绘制?

    这是我的设置 stage new Stage 1280 800 false button new Button drawableUp drawableDown stage add button 呈现如下 Override public vo
  • 更改 Bootstrap3 水平表单上输入的宽度

    Reading django crispy forms http django crispy forms readthedocs org en latest crispy tag forms html bootstrap3 horizont
  • 将 foreach 值添加到 Ajax

    我有两个问题如下 1 如何将值从 foreach 传递到 ajax 这是我的代码和到目前为止我所拥有的 尝试将ajax放入foreach中 但它继续为我提供foreach中姓氏的id 2 有没有一种方法可以让我单击 添加 然后数据将被保存并
  • 如果返回格式为 xml,如何删除 Web api 中的模式节点?

    我有一个 Web api 方法 它采用 format 作为参数 提供返回 xml 和 json 方法返回的数据类型是 DataTable 在 json 格式中 一切看起来都很好 但在 xml 格式中 数据表的架构和 xml 节点中的一些其他