商城首页欢迎来到中国正版软件门户

您的位置:首页 >C#解析Web Service返回的XML数据方法

C#解析Web Service返回的XML数据方法

  发布于2026-02-24 阅读(0)

扫一扫,手机访问

答案: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 = @"<Response> <User> <Id>123</Id> <Name>张三</Name> <Email>zhangsan@example.com</Email> </User> </Response>";

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);

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 更灵活;如果结构稳定,推荐反序列化为对象,代码更清晰、易维护。注意处理空值和异常,确保网络请求返回的数据有效。

本文转载于:互联网 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注