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

在C#中从Swagger获取XML并存储到变量的问题

从Swagger对应API获取XML并存储到C#变量

核心思路

Swagger是API文档工具,你需要调用文档中对应的实际API接口来获取XML响应,而非直接从Swagger页面抓取数据。以下是具体实现步骤:

步骤1:用HttpClient调用API获取XML字符串

通过HttpClient发送HTTP请求,指定接收XML格式的响应,直接将响应内容读取为string变量:

using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        // 替换为Swagger中显示的API实际地址
        string apiUrl = "https://your-api-domain.com/api/notes";
        
        using (HttpClient client = new HttpClient())
        {
            // 设置请求头,告知服务器返回XML格式
            client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/xml"));
            
            // 如果API需要认证,添加认证头(比如Bearer Token)
            // client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "your-token-here");
            
            HttpResponseMessage response = await client.GetAsync(apiUrl);
            
            // 确保请求成功
            response.EnsureSuccessStatusCode();
            
            // 将响应内容读取为string变量
            string xmlString = await response.Content.ReadAsStringAsync();
            
            // 此时xmlString已存储完整的XML数据
            Console.WriteLine(xmlString);
        }
    }
}

步骤2:将XML字符串转换为XmlDocument

如果需要存入XmlDocument变量,直接加载已获取的XML字符串即可:

using System.Xml;

// 承接上面的xmlString变量
XmlDocument xmlDoc = new XmlDocument();
try
{
    xmlDoc.LoadXml(xmlString);
    // 此时xmlDoc已加载完成,可进行后续XML操作
    XmlNode noteNode = xmlDoc.SelectSingleNode("/note");
    string toValue = noteNode.SelectSingleNode("to").InnerText;
    Console.WriteLine($"To: {toValue}");
}
catch (XmlException ex)
{
    Console.WriteLine("XML格式错误:" + ex.Message);
}

解决“无法捕获XML数据”的常见问题

  • 未设置Accept头:如果不指定Accept: application/xml,API可能默认返回JSON格式,导致你获取的不是XML。
  • 缺少认证信息:Swagger页面测试时可能自动携带了认证令牌(比如JWT),但代码中需要手动添加Authorization请求头。
  • API地址错误:确保代码中使用的URL和Swagger中显示的接口地址完全一致(包括BaseUrl、路径参数等)。
  • 响应编码问题:如果XML包含特殊字符,可指定编码读取:await response.Content.ReadAsStringAsync(System.Text.Encoding.UTF8);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:45:34