Десериализация Xml с несколькими узлами InnerText - PullRequest
0 голосов
/ 07 ноября 2019

У меня проблемы с десериализацией XML в C # Model. Я извлекаю этот XML из внешнего API, поэтому я не могу его контролировать. У него есть несколько узлов "InnerText", которые сериализованно не могут десериализовать правильно (последний выиграл, другие потеряли).

Я уже исправил это, используя класс XmlDocument, но мне нужно вместо этого сделать это с моделью.

XML, который я пытаюсь десериализовать:

    <root>
         <passage>
              <hlword>Test</hlword> 
              your Internet.....
              <hlword>test</hlword> 
              from Ookla.
          </passage>
     </root>

C # Классы:

[XmlRoot(ElementName = "passage")]
public class Passage
{
    [XmlElement(ElementName = "hlword")]
    public List<string> Hlword { get; set; }
    [XmlText]
    public string InnerText { get; set; }
}

[XmlRoot(ElementName = "root")]
public class Root
{
    [XmlElement(ElementName = "passage")]
    public List<Passage> Passage { get; set; }
    [XmlText]
    public string InnerText { get; set; }
}

Из приведенного выше примера мне нужно извлечь: "Проверьте свой интернет .. ... test from Ookla ", Вместо этого я получаю класс List of Passage с двумя Hlwords (внутренний текст" test ") и внутренним текстом в классе Root" из Ookla ". Весь текст после элементов опущен.

1 Ответ

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

Попробуйте прочитать внутренний текст, используя XmlDocument

var doc = new XmlDocument();
doc.LoadXml(xmlString);
var text = doc.SelectSingleNode("root/passage").InnerText;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...