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

在C#中解析XML响应,提取credentials中的token值

在C#中解析XML响应获取token值

要解析这份带命名空间的XML并提取credentials节点的token属性,你可以用以下几种常见的C#实现方式:

方法1:使用LINQ to XML(XDocument)

这种方式简洁直观,适合.NET Framework 3.5及以上版本:

using System;
using System.Xml.Linq;

class Program
{
    static void Main()
    {
        // 假设xmlResponse是你获取到的XML字符串
        string xmlResponse = @"<?xml version='1.0' encoding='UTF-8'?>
<tsResponse xmlns=""site.com/api"" xmlns:xsi=""site.org/2001/XMLSchema-instance"" xsi:schemaLocation=""site.com/api help.site.com/samples/en-us/rest_api/ts-api_3_4.xsd"">
    <credentials token=""xxxxxx-xxxxxx-xxxxxx"">
        <site id=""xxxxxx-xxxxxx-xxxxxx"" contentUrl=""sitename""/>
        <user id=""xxxxxx-xxxxxx-xxxxxx""/>
    </credentials>
</tsResponse>";

        // 定义XML命名空间
        XNamespace ns = "site.com/api";
        
        // 加载XML文档
        XDocument doc = XDocument.Parse(xmlResponse);
        
        // 查询credentials节点并获取token属性
        string token = doc.Element(ns + "tsResponse")?
                          .Element(ns + "credentials")?
                          .Attribute("token")?
                          .Value;
        
        Console.WriteLine("Token值:" + token);
    }
}

方法2:使用XmlDocument

这是传统的DOM解析方式,兼容更早的.NET版本:

using System;
using System.Xml;

class Program
{
    static void Main()
    {
        string xmlResponse = @"<?xml version='1.0' encoding='UTF-8'?>
<tsResponse xmlns=""site.com/api"" xmlns:xsi=""site.org/2001/XMLSchema-instance"" xsi:schemaLocation=""site.com/api help.site.com/samples/en-us/rest_api/ts-api_3_4.xsd"">
    <credentials token=""xxxxxx-xxxxxx-xxxxxx"">
        <site id=""xxxxxx-xxxxxx-xxxxxx"" contentUrl=""sitename""/>
        <user id=""xxxxxx-xxxxxx-xxxxxx""/>
    </credentials>
</tsResponse>";

        XmlDocument doc = new XmlDocument();
        doc.LoadXml(xmlResponse);
        
        // 创建命名空间管理器
        XmlNamespaceManager nsManager = new XmlNamespaceManager(doc.NameTable);
        nsManager.AddNamespace("ns", "site.com/api");
        
        // 选择credentials节点
        XmlNode credentialsNode = doc.SelectSingleNode("//ns:tsResponse/ns:credentials", nsManager);
        
        if (credentialsNode != null)
        {
            string token = credentialsNode.Attributes["token"]?.Value;
            Console.WriteLine("Token值:" + token);
        }
    }
}

关键注意点

  • 必须处理XML的命名空间:因为根节点tsResponse带有xmlns="site.com/api"命名空间,所有子节点默认继承该命名空间,解析时必须指定,否则会找不到目标节点。
  • 代码中使用了空传播运算符?.来避免空引用异常,确保节点或属性不存在时不会崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 01:24:30