读取XML文件时如何将text_description的子元素视为文本字符串
解决XML中保留HTML格式内容的问题
方案1:用XmlNode类型存储内容
直接把text_description属性定义为XmlNode类型,反序列化时会自动保留内部所有XML/HTML结构,后续通过OuterXml属性就能提取完整的带格式字符串。
示例类定义:
[XmlRoot("people")] public class People { [XmlElement("person")] public Person Person { get; set; } } public class Person { public string name { get; set; } public int age { get; set; } [XmlElement("text_description")] public XmlNode TextDescription { get; set; } }
使用示例:
var serializer = new XmlSerializer(typeof(People)); using var reader = new StringReader(xmlContent); var people = (People)serializer.Deserialize(reader); // 获取完整的带格式HTML字符串 string htmlContent = people.Person.TextDescription.OuterXml;
方案2:使用[XmlAnyElement]属性
如果需要更灵活的处理,用[XmlAnyElement]标记属性,它会捕获指定元素下的所有子节点,同样能完整保留结构。
修改类定义:
public class Person { public string name { get; set; } public int age { get; set; } [XmlAnyElement("text_description")] public XmlElement TextDescription { get; set; } }
提取字符串的方式和方案1一致,通过OuterXml即可获取包含所有内部HTML的内容。
为什么[XmlText]无效?
[XmlText]仅能捕获元素内的纯文本内容,而text_description里是嵌套的XML/HTML元素,并非纯文本,所以该属性无法识别这些子元素,自然拿不到你需要的格式内容。
内容的提问来源于stack exchange,提问作者Adam Degerman
相关产品推荐
相关产品推荐

