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

解析XML的更简便方法:如何用LINQ等技术读取API返回XML的错误码

实现方案

方案1:使用LINQ to XML(更简洁,推荐)

LINQ to XML是.NET中比传统XmlDocument更易用的XML处理方案,代码可读性更高,也更不容易出错。
首先需要引入命名空间:
using System.Xml.Linq;

完整实现代码如下:

// 优化后的API调用代码,删除不必要的StreamReader,修正原代码语法问题
HttpClientHandler handler = new HttpClientHandler();
HttpClient client = new HttpClient(handler);
string xmlContent = client.GetStringAsync("https://api/access.mth?username=xyz&password=xyz@2021")
    .GetAwaiter().GetResult();

// 直接读取errorcode节点值,不需要逐层遍历子节点
XDocument xDoc = XDocument.Parse(xmlContent);
string errorCode = xDoc.Descendants("errorcode").FirstOrDefault()?.Value;

这种写法不需要按索引访问子节点,就算后续XML结构有小幅调整,只要errorcode节点存在就能正常读取,稳定性远高于原有的ChildNodes[N]写法。


方案2:简化原有XmlDocument写法

如果你不想替换原有XmlDocument技术栈,也可以直接用XPath定位节点,不需要逐层遍历子节点:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xmlContent);
// 直接通过XPath路径定位节点,避免索引错误
string errorCode = xmlDoc.SelectSingleNode("/response/error/errorcode")?.InnerText;

优化建议

  • 生产环境建议将HttpClient设置为单例复用,避免频繁实例化导致的端口耗尽问题
  • 异步场景下建议使用await调用API方法,不要用GetAwaiter().GetResult()或.Result阻塞线程
  • 读取节点值时建议加空判断,避免XML结构不符合预期时抛出空引用异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:15:01