C# 如何解析Web Service返回的xml数据

答案:C#中解析Web Service返回的XML数据常用XmlDocument、XDocument或XmlSerializer。首先根据.NET版本和需求选择方法:若结构复杂可用XmlDocument进行节点遍历;若语法简洁推荐XDocument(LINQ to XML);若结构固定则定义类并用XmlSerializer反序列化为对象,提升可维护性。处理带命名空间的XML时需指定XNamespace。同时注意空值和异常处理,确保数据有效性。

c# 如何解析web service返回的xml数据

在C#中解析Web Service返回的XML数据,通常可以通过 XmlDocumentXDocument(LINQ to XML)来实现。具体选择取决于你使用的.NET版本和个人偏好。以下是常用方法和示例。

使用 XmlDocument 解析 XML

XmlDocument 是基于 DOM 的类,适合处理结构较复杂的 XML,支持节点遍历和修改。

using System.Xml;

// 假设 webServiceResult 是从 Web Service 获取的 XML 字符串string webServiceResult = @"123张三zhangsan@example.com";

XmlDocument doc = new XmlDocument();doc.LoadXml(webServiceResult);

XmlNode userNode = doc.SelectSingleNode("//User");if (userNode != null){string id = userNode["Id"]?.InnerText;string name = userNode["Name"]?.InnerText;string email = userNode["Email"]?.InnerText;

Console.WriteLine($"ID: {id}, Name: {name}, Email: {email}");

}

使用 LINQ to XML (XDocument) 解析

XDocument 更现代,语法更简洁,推荐在 .NET 3.5 及以上版本使用。

using System.Xml.Linq;

XDocument xDoc = XDocument.Parse(webServiceResult);

图酷AI
图酷AI

下载即用!可以免费使用的AI图像处理工具,致力于为用户提供最先进的AI图像处理技术,让图像编辑变得简单高效。

图酷AI 106
查看详情 图酷AI

var user = xDoc.Descendants("User").FirstOrDefault();if (user != null){string id = user.Element("Id")?.Value;string name = user.Element("Name")?.Value;string email = user.Element("Email")?.Value;

Console.WriteLine($"ID: {id}, Name: {name}, Email: {email}");

}

处理带命名空间的 XML

如果 Web Service 返回的 XML 包含命名空间,必须在查询时指定。

XNamespace ns = "http://example.com/namespace";

var user = xDoc.Descendants(ns + "User").FirstOrDefault();if (user != null){string name = user.Element(ns + "Name")?.Value;// 注意:每个元素都要加上命名空间}

反序列化为对象(推荐用于固定结构)

如果你知道 XML 的结构,可以定义类并使用 XmlSerializer 自动映射。

public class User{    public int Id { get; set; }    public string Name { get; set; }    public string Email { get; set; }}

public class Response{public User User { get; set; }}

// 反序列化using (StringReader sr = new StringReader(webServiceResult)){XmlSerializer serializer = new XmlSerializer(typeof(Response));Response response = (Response)serializer.Deserialize(sr);Console.WriteLine($"{response.User.Name} - {response.User.Email}");}

基本上就这些常见方式。如果 XML 结构简单,用 XDocument 更灵活;如果结构稳定,推荐反序列化为对象,代码更清晰、易维护。注意处理空值和异常,确保网络请求返回的数据有效。

以上就是C# 如何解析Web Service返回的xml数据的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1440895.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 17:33:16
下一篇 2025年12月17日 17:33:24

相关推荐

发表回复

登录后才能评论
关注微信