XML API десериализация: узел с несколькими дочерними узлами с одинаковым именем тега - PullRequest
1 голос
/ 10 ноября 2019

Я создаю веб-API с использованием Visual Studio 2015. Мой XML-запрос содержит дочерние узлы с тем же именем тега.

<TestData>
   <TestChild>
      <input>
       <name ="Test1"/>
       <value="DUMMY VALUE1"/>
      </input>
      <input>
       <name ="Test1"/>
       <value="DUMMY VALUE1"/>
      </input>
      <input>
       <name ="Test1"/>
       <value="DUMMY VALUE1"/>
      </input>
 </TestChild>
</TestData>

Я добавил атрибут XRoot и XElement в .net c #объект как показано ниже:

    [XmlRoot]
    public class TestData
    {
        [XmlElement]
        public TestChild TestChild { get; set; }
    }

    public class TestChild
    {
        [XmlElement]
        public input[] input { get; set; }
    }

    public class input
    {
        [XmlElement]
        public string name { get; set; }
        [XmlElement]
        public string value { get; set; }
    }

Но пример xml, сгенерированный с помощью приведенного выше кода, выглядит немного иначе. Он добавляет родительский тег input , а затем в него добавляются несколько тегов input. Мне нужно, чтобы xml выглядел так же, как и тот, что был указан выше.

<TestData xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <TestChild>
    <input>
      <input>
        <name>sample string 1</name>
        <value>sample string 2</value>
      </input>
      <input>
        <name>sample string 1</name>
        <value>sample string 2</value>
      </input>
    </input>
  </TestChild>
</TestData>

Я пытался установить

GlobalConfiguration.Configuration.Formatters.XmlFormatter.UseXmlSerializer = true;

, но это тоже не помогает. Я новичок в Web API, и любая помощь / предложение будут оценены.

1 Ответ

0 голосов
/ 12 ноября 2019

Сохраните свойство TestChild , но удалите класс TestChild . Попробуйте вот так:

    [XmlRoot]
    public class TestData
    {
        [XmlElement]
        public input[] TestChild { get; set; }
    }

    public class input
    {
        [XmlElement]
        public string name { get; set; }
        [XmlElement]
        public string value { get; set; }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...