You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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&#x0027;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&#x0027;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将&#x0027;转换为普通单引号
  • 根节点处理:原始XML片段缺少根节点,解析时需手动添加(如<root>),否则XDocument会抛出异常

内容的提问来源于stack exchange,提问作者Basava

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 19:40:26