C # xml схема десериализации с html-частью в виде строки - PullRequest
0 голосов
/ 05 февраля 2019

Мой xml выглядит так:

<document>
    <body>
        <p>
            <text>asdasdasdasd</text>
        </p>
        <text>  </text>
        <p>
            <text>Bl abloa blasdasdasd</text>
        </p>
    </body>     
</document>

Итак, я хочу разобрать элемент body как строку.

    [XmlRoot(ElementName = "document")]
    public class Document
    {      
        [XmlElement(ElementName = "body")]
        public string Body { get; set; }   
    }   

Я пробовал [XmlText] и разныеатрибуты, подобные этому [XmlText (Type = typeof (string))] *

Я пытаюсь сделать это напрямую в качестве параметра в методе моего контроллера:

    [AllowAnonymous]
    [HttpPost]
    [Route("")]
    public async Task SearchResult([FromBody] SearchResultDataContract searchResult)
    {
        try

Were SearchResultDataContract являетсяобъект документа.

Но мне не удалось найти решения.

Ответы [ 2 ]

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

Мне удалось решить эту проблему, создав собственное расширение для десериализации, используя это: Десериализовать значение элемента в виде строки, хотя оно содержит смешанное содержимое

0 голосов
/ 05 февраля 2019
[XmlRoot(ElementName = "document")]
public class Document
{
    [XmlElement("body")]
    public XmlElement Body { get; set; }
}

должно работать, если речь идет о xhtml, а не html.Вы не можете иметь дело с string напрямую, AFAIK - кодировщик не будет доверять вам, что ваш xml всегда будет правильно сформирован - но он доверяет XmlElement.Вы всегда можете добавить что-то, что прокладывается между двумя, если это необходимо.

...