使用html部分作为字符串的C#XML模式反序列化

时间:2019-02-05 13:50:51

标签: c# xml xml-serialization

我的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

SearchResultDataContract是文档对象。

但是我还没有找到任何解决方案。

2 个答案:

答案 0 :(得分:2)

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

应该有效,只要我们谈论的是xhtml,而不是html。您无法直接处理string,AFAIK-编码器不会相信您xml的格式总是会正确的-但它会信任XmlElement。如果需要,您总是可以在两者之间添加一些填充。

答案 1 :(得分:0)

我设法通过使用以下命令创建自己的反序列化扩展来解决此问题: Deserialize element value as string although it contains mixed content