C#中如何获取保留嵌套标签的XElement完整内容?
解决方案
要获取包含嵌套<b>标签的完整内容,不用自己写复杂遍历逻辑,直接用下面的方法即可:
方法1:直接拼接子节点字符串
这是最简单的实现方式,将<text>元素下的所有子节点(文本节点和<b>元素)转为字符串后拼接:
string fullContent = string.Concat(element.Nodes());
执行后就能得到目标结果:The temperature is raised <b>75</b> to <b>80</b> Celsius
方法2:用XmlWriter序列化(适合复杂场景)
如果需要控制XML输出格式(比如处理特殊字符转义),可以用XmlWriter来序列化所有子节点:
using (var stringWriter = new StringWriter()) using (var xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings { OmitXmlDeclaration = true })) { foreach (var node in element.Nodes()) { node.WriteTo(xmlWriter); } xmlWriter.Flush(); string fullContent = stringWriter.ToString(); }
你之前遍历失败的原因
你尝试遍历element.Nodes()没成功,大概率是只处理了元素节点(比如误用Elements()而非Nodes()),或者没直接把每个节点转为字符串。Nodes()返回的内容包含文本节点(XText类型)和元素节点(XElement类型),必须把每一个节点都调用ToString()再拼接,不能只提取元素的内容。
内容的提问来源于stack exchange,提问作者Krishantha Karunarathna
相关产品推荐
相关产品推荐

