XML-сообщение в веб-API-интерфейсы к нулю - PullRequest
0 голосов
/ 02 февраля 2019

В webapiconfig у меня есть

 config.Formatters.XmlFormatter.UseXmlSerializer = true;

Контроллер

 public class PersonController : ApiController
 {
    [HttpPost]
    public void Submit([FromBody]Person person)
    {
        // Do something with person
    }
}

Случай 1 (Работает, то есть объект person получает значение из отправленного XML) Когда я публикую XML как этот

 <Person>
   <Name>Alex</Name>
   <Country>USA</Country>
 </Person>

Случай 2 (не работает, т. Е. Объект person имеет значение null) Когда я публикую XML следующим образом

 <?xml version="1.0 encoding="utf-8"?>
 <Person xmlns:xsd="http:www.w3.org/2001/XMLScheme"  
    xmlns:xsi="http:www.w3.org/2001/XMLScheme-instance">
  <Name>Alex</Name>
  <Country>USA</Country>
 </Person>

Что мне нужно сделать, чтобы объект объекта Case 2 получил значения, отправленные в XML

1 Ответ

0 голосов
/ 02 февраля 2019

Вам необходимо предоставить пространство имен в качестве атрибута для узла Person.

Поэтому используйте приведенную ниже структуру класса, чтобы заставить его работать с Case 2,

[XmlRoot("Person")]
public class Person
{
    [XmlElement("Name")]
    public string Name { get; set; }
    [XmlElement("Country")]
    public string Country { get; set; }
    [XmlAttribute("xsd", Namespace = "http://www.w3.org/2000/xmlns/")]
    public string Xsd { get; set; }
    [XmlAttribute("xsi", Namespace = "http://www.w3.org/2000/xmlns/")]
    public string Xsi { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...