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

在C#中解析Web Service返回的XML数据,通常可以通过 XmlDocument 或 XDocument(LINQ to XML)来实现。具体选择取决于你使用的.NET版本和个人偏好。以下是常用方法和示例。
XmlDocument 是基于 DOM 的类,适合处理结构较复杂的 XML,支持节点遍历和修改。
using System.Xml;
<p>// 假设 webServiceResult 是从 Web Service 获取的 XML 字符串
string webServiceResult = @"<Response>
<User>
<Id>123</Id>
<Name>张三</Name>
<Email>zhangsan@example.com</Email>
</User>
</Response>";</p><p>XmlDocument doc = new XmlDocument();
doc.LoadXml(webServiceResult);</p><p>XmlNode userNode = doc.SelectSingleNode("//User");
if (userNode != null)
{
string id = userNode["Id"]?.InnerText;
string name = userNode["Name"]?.InnerText;
string email = userNode["Email"]?.InnerText;</p><pre class='brush:php;toolbar:false;'>Console.WriteLine($"ID: {id}, Name: {name}, Email: {email}");}
XDocument 更现代,语法更简洁,推荐在 .NET 3.5 及以上版本使用。
using System.Xml.Linq;
<p>XDocument xDoc = XDocument.Parse(webServiceResult);</p>
<div class="aritcle_card">
<a class="aritcle_card_img" href="/ai/%E5%A6%82%E7%9F%A5ai%E7%AC%94%E8%AE%B0">
<img src="https://img.php.cn/upload/ai_manual/000/000/000/175679994166405.png" alt="如知AI笔记">
</a>
<div class="aritcle_card_info">
<a href="/ai/%E5%A6%82%E7%9F%A5ai%E7%AC%94%E8%AE%B0">如知AI笔记</a>
<p>如知笔记——支持markdown的在线笔记,支持ai智能写作、AI搜索,支持DeepseekR1满血大模型</p>
<div class="">
<img src="/static/images/card_xiazai.png" alt="如知AI笔记">
<span>27</span>
</div>
</div>
<a href="/ai/%E5%A6%82%E7%9F%A5ai%E7%AC%94%E8%AE%B0" class="aritcle_card_btn">
<span>查看详情</span>
<img src="/static/images/cardxiayige-3.png" alt="如知AI笔记">
</a>
</div>
<p>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;</p><pre class='brush:php;toolbar:false;'>Console.WriteLine($"ID: {id}, Name: {name}, Email: {email}");}
如果 Web Service 返回的 XML 包含命名空间,必须在查询时指定。
XNamespace ns = "http://example.com/namespace";
<p>var user = xDoc.Descendants(ns + "User").FirstOrDefault();
if (user != null)
{
string name = user.Element(ns + "Name")?.Value;
// 注意:每个元素都要加上命名空间
}</p>如果你知道 XML 的结构,可以定义类并使用 XmlSerializer 自动映射。
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
}
<p>public class Response
{
public User User { get; set; }
}</p><p>// 反序列化
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}");
}</p>基本上就这些常见方式。如果 XML 结构简单,用 XDocument 更灵活;如果结构稳定,推荐反序列化为对象,代码更清晰、易维护。注意处理空值和异常,确保网络请求返回的数据有效。
以上就是C# 如何解析Web Service返回的xml数据的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号