【发布时间】:2020-05-29 12:58:44
【问题描述】:
使用 Postman、C#、.NET Framework 4.7
我从 Postman 发出 GET 请求,内容接受设置为“application/xml”,我的 .NET Framework Web API 将以 XML 响应(太棒了!)。当我返回 Request.CreateResponse(HttpStatusCode.OK, myResponse) 时,我不需要手动序列化任何内容,因为 .NET Framework 会序列化我的响应对象。
但是,它似乎包含了我不熟悉的额外内容,我想知道它们是否可以通过 Global.asax 设置或类似设置删除?
- xmlns="http://schemas.datacontract.org/2004/07/dto.MyModels" 是我想删除的东西!
- “d3p1”不是我在创建 XML 时遇到的。我可以以某种方式删除它吗?
-
<error i:nil="true" />在某些内容为空时弹出。当它为空时,是否有可能只是出现或不出现?
因此,XML 响应如下所示:
<SimpleResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/dto.MyModels">
<error i:nil="true" />
<result>
<bookList xmlns:d3p1="http://schemas.datacontract.org/2004/07/dto.MyModels.Shared">
<d3p1:Book>
<d3p1:bookname>Book 1 Name</d3p1:bookname>
<d3p1:serial>ZMeTaQ1kejh0mJYGHE4+1a4Y2juU6tMDd5zYDqN4tqI=</d3p1:serial>
<d3p1:id>4</d3p1:id>
</d3p1:Book>
<d3p1:Book>
<d3p1:bookname>Hello World</d3p1:bookname>
<d3p1:serial>9lM16kho3bgsrG+wRh4ejtZjwrYJwp6FbRqnnZ4CJPA=</d3p1:serial>
<d3p1:id>5</d3p1:id>
</d3p1:Book>
<d3p1:Book>
<d3p1:bookname>Ding</d3p1:bookname>
<d3p1:serial>XCqqKB+Wi3i4z6nN1Ry8IHtar6ogojjiqxMfvfgC0qc=</d3p1:serial>
<d3p1:id>6</d3p1:id>
</d3p1:Book>
</bookList>
<author xmlns:d3p1="http://schemas.datacontract.org/2004/07/dto.Models.Android.Shared">
<d3p1:pictureId>0</d3p1:pictureId>
<d3p1:websiteurl i:nil="true" />
<d3p1:email i:nil="true" />
<d3p1:name>Jo Blogs</d3p1:size>
<d3p1:age>0</d3p1:size>
</author>
</result>
</SimpleResponse>
我的课程看起来像这样:
public string error { get; set;}
public class SimpleResponse
{
public List<Book> bookList { get; set; }
public Author author { get; set; }
}
public class Book
{
public string bookname { get; set; }
public string serial { get; set; }
public int id { get; set; }
}
public class Author
{
public string pictureId{ get; set; }
public string websiteurl { get; set; }
public string email { get; set; }
public string name { get; set; }
public int age { get; set; }
}
【问题讨论】:
-
验证 xml 需要架构。验证正在寻找缺失值,这给出了 nil = true。
标签: c# .net xml xml-serialization