在C#中如何用冒号合并XML的title与subtitle元素内容
问题
给定如下XML片段:
<title>Discourse interaction between <italic>The New York Times</italic> and <italic>China Daily</italic></title> <subtitle>The case of Google's departure</subtitle>
需要生成输出:Discourse interaction between The New York Times and China Daily: The case of Google's departure
现有C#代码仅能提取<title>的内容,需实现将<title>与<subtitle>用冒号合并,同时移除<italic>标签、解析HTML转义字符的功能。
解决方案
以下是实现需求的C#代码:
using System; using System.Linq; using System.Xml.Linq; using System.Web; class XmlProcessing { static void Main() { // 注意:XML需包含根节点,否则解析会报错,这里手动包裹<root> string rawXml = @"<root> <title>Discourse interaction between <italic>The New York Times</italic> and <italic>China Daily</italic></title> <subtitle>The case of Google's departure</subtitle> </root>"; XDocument doc = XDocument.Parse(rawXml); var root = doc.Element("root"); // 提取<title>的纯文本(忽略内部<italic>标签) string title = string.Concat(root.Element("title").Nodes().OfType<XText>().Select(t => t.Value)).Trim(); // 提取<subtitle>内容并解码HTML转义字符 string subtitle = HttpUtility.HtmlDecode(root.Element("subtitle").Value.Trim()); // 拼接结果 string output = $"{title}: {subtitle}"; Console.WriteLine(output); } }
关键说明
- 提取纯文本:通过遍历
<title>内的XText节点,跳过<italic>这类元素节点,直接获取文本内容 - 解析转义字符:使用
HttpUtility.HtmlDecode将'转换为普通单引号 - 根节点处理:原始XML片段缺少根节点,解析时需手动添加(如
<root>),否则XDocument会抛出异常
内容的提问来源于stack exchange,提问作者Basava
相关产品推荐
相关产品推荐

