加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

当元素在其名称中有冒号时,如何使用LINQ查询XDocument?

发布时间:2020-12-16 08:04:02 所属栏目:百科 来源:网络整理
导读:我正在使用XDocument对象中的LINQ to XML。在下面的例子中如何查询结果元素? serv:header serv:response serv:resultSUCCESS/serv:result serv:gsbStatusPRIMARY/serv:gsbStatus /serv:response/serv:header 当我使用这样的语句时,我得到异常’附加信息:
我正在使用XDocument对象中的LINQ to XML。在下面的例子中如何查询结果元素?
<serv:header>
   <serv:response>
      <serv:result>SUCCESS</serv:result>
      <serv:gsbStatus>PRIMARY</serv:gsbStatus>
   </serv:response>
</serv:header>

当我使用这样的语句时,我得到异常’附加信息:’:’字符,十六进制值0x3A,不能包含在名称中。

XDocument doc = XDocument.Parse(xml);
string value = doc.Descendants("serv:header").First().Descendants("serv:response").First().Descendants("serv:result").First().Value;
你的XML中的serv是一个命名空间前缀。它必须与标识命名空间的URI相关联。在XML中寻找这样的属性:
xmlns:serv="..."

引号内的值将是命名空间。现在,在你的C#代码中,你使用该URI创建一个XNamespace对象:

private static readonly XNamespace serv = "...";

然后你可以在这样的查询中使用它:

string value = doc
    .Descendants(serv + "header").First()
    .Descendants(serv + "response").First()
    .Descendants(serv + "result").First()
    .Value;

顺便说一句,你应该考虑使用.Element()而不是.Descendants()。First()。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读