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

如何使用C# XmlDocument从指定XML文档中获取UserGUID值

获取带命名空间XML中的UserGUID值(XmlDocument方式)

嘿,这个问题的核心是处理XML命名空间——你的XML里带了默认命名空间http://schemas.datacontract.org/2004/07/GaryLeaderboardsAPI.Models,直接用常规的节点选择会找不到元素,必须先给XmlDocument配置命名空间管理器才行。

下面是完整的可运行代码:

// 你的XML字符串内容
string xmlContent = @"<User xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://schemas.datacontract.org/2004/07/GaryLeaderboardsAPI.Models"">
    <Game_ID>3</Game_ID>
    <UserGUID>e00d3560-4133-4ba6-8bba-e6c8659468b4</UserGUID>
    <UserName>tony2</UserName>
    <User_ID>16</User_ID>
</User>";

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

// 第一步:创建命名空间管理器,给默认命名空间绑定一个自定义前缀(比如"ns",名字随便起)
XmlNamespaceManager nsManager = new XmlNamespaceManager(doc.NameTable);
nsManager.AddNamespace("ns", "http://schemas.datacontract.org/2004/07/GaryLeaderboardsAPI.Models");

// 第二步:用带前缀的XPath查询目标节点
XmlNode userGuidNode = doc.SelectSingleNode("//ns:User/ns:UserGUID", nsManager);

// 第三步:获取节点值(记得判空,避免空引用异常)
if (userGuidNode != null)
{
    string userGuidValue = userGuidNode.InnerText;
    // 这里可以对值做后续操作,比如打印、存储等
    Console.WriteLine(userGuidValue);
}

为啥要这么操作?

XmlDocument对带命名空间的XML比较“认死理”:如果不指定命名空间,它会默认你要找的是没有任何命名空间的<UserGUID>元素,自然匹配不到。通过命名空间管理器把默认命名空间和前缀绑定,XPath就能精准定位到目标节点了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:53:01