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

使用XDocument将选定的XML节点转换为字符串

使用XDocument将XML选定节点转换为字符串

很简单,咱们用C#的XDocument来处理这个需求,我给你分几种常见场景举例,对应你提供的XML结构:

首先,先把你的XML加载到XDocument里——你可以直接解析字符串,或者从文件加载:

// 你的XML字符串
string xmlContent = @"<?xml version=""1.0"" encoding=""utf-8""?> 
<GlobalResponses> 
  <Filters> 
    <FilterId>11</FilterId> 
    <FilterId>5</FilterId> 
    <FilterId>10</FilterId> 
  </Filters> 
  <Responses> 
    <Response> 
      <Name>Bob</Name> 
    </Response> 
    <Response> 
      <Name>Jim</Name> 
    </Response> 
    <Response> 
      <Name>Steve</Name> 
    </Response> 
  </Responses> 
</GlobalResponses>";

// 加载到XDocument
XDocument doc = XDocument.Parse(xmlContent);

场景1:提取单个节点转为字符串

比如你想把第一个<FilterId>或者某个<Response>转成字符串:

// 获取第一个FilterId节点并转字符串
var firstFilterId = doc.Descendants("FilterId").FirstOrDefault();
if (firstFilterId != null)
{
    string filterIdStr = firstFilterId.ToString();
    // 输出结果:<FilterId>11</FilterId>
}

// 获取Name为Jim的Response节点转字符串
var jimResponse = doc.Descendants("Response")
                     .FirstOrDefault(r => r.Element("Name")?.Value == "Jim");
if (jimResponse != null)
{
    string jimResponseStr = jimResponse.ToString();
    // 输出结果:<Response><Name>Jim</Name></Response>
}

场景2:提取整个父节点(包含所有子节点)转为字符串

比如把整个<Filters>或者<Responses>节点转成完整的XML字符串:

// 获取整个Filters节点
var filtersNode = doc.Element("GlobalResponses")?.Element("Filters");
if (filtersNode != null)
{
    string filtersStr = filtersNode.ToString();
    /* 输出结果:
    <Filters>
      <FilterId>11</FilterId>
      <FilterId>5</FilterId>
      <FilterId>10</FilterId>
    </Filters>
    */
}

// 获取整个Responses节点同理
var responsesNode = doc.Element("GlobalResponses")?.Element("Responses");
if (responsesNode != null)
{
    string responsesStr = responsesNode.ToString();
}

场景3:提取多个零散节点并拼接成字符串

比如你想把所有<FilterId>节点单独提取出来拼接成一个字符串:

var allFilterIds = doc.Descendants("FilterId");
string filterIdsStr = string.Join(Environment.NewLine, allFilterIds.Select(f => f.ToString()));
/* 输出结果:
<FilterId>11</FilterId>
<FilterId>5</FilterId>
<FilterId>10</FilterId>
*/

如果想要不带格式的紧凑字符串,可以用SaveOptions.DisableFormatting参数:

string compactFilterStr = filtersNode?.ToString(SaveOptions.DisableFormatting);
// 输出结果:<Filters><FilterId>11</FilterId><FilterId>5</FilterId><FilterId>10</FilterId></Filters>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:21:27