以html部分作为字符串的C#xml模式反序列化

以html部分作为字符串的C#xml模式反序列化,c#,xml,xml-serialization,C#,Xml,Xml Serialization,我的xml如下所示: <document> <body> <p> <text>asdasdasdasd</text> </p> <text> </text> <p> <text>Bl abloa blasdasdasd</text>

我的xml如下所示:

<document>
    <body>
        <p>
            <text>asdasdasdasd</text>
        </p>
        <text>  </text>
        <p>
            <text>Bl abloa blasdasdasd</text>
        </p>
    </body>     
</document>
我已经尝试了[XmlText]和类似于[XmlText(Type=typeof(string))]的不同属性

我正试图将其作为控制器方法中的参数直接执行:

    [AllowAnonymous]
    [HttpPost]
    [Route("")]
    public async Task SearchResult([FromBody] SearchResultDataContract searchResult)
    {
        try
WARE SearchResultDataContract是文档对象

但我还没有找到任何解决办法

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

只要我们讨论的是xhtml,而不是html,就应该可以工作。您不能直接处理
string
,好吧-编码器不会相信您的xml总是格式良好的-但它信任
XmlElement
。如果需要的话,您可以在两者之间添加一些填充物。

我通过创建自己的反序列化扩展来解决这一问题:

你想要整个
节点作为字符串还是只想要
节点在里面?最简单的方法是将整个身体节点作为字符串:)@er-mfahhgkThanks!我已经试了好几个小时了!很好的解决方案,从xmlelement中,我只需获取innerXml以将其作为字符串。谢谢:)嗯,似乎outerXml只给了我第一个节点“”,而没有给身体内部的其他节点。。。你知道为什么吗?@DanielGustafsson噢,这太令人烦恼了;但我想这是有道理的。。。我在这种情况下没有好的解决方案;我会删除这个答案哦不:(无论如何,谢谢!
[XmlRoot(ElementName = "document")]
public class Document
{
    [XmlElement("body")]
    public XmlElement Body { get; set; }
}