首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获得子元素的集合??查询使用Xdocument返回空。

如何获得子元素的集合??查询使用Xdocument返回空。
EN

Stack Overflow用户
提问于 2017-04-25 10:20:12
回答 2查看 36关注 0票数 0

有人能告诉我,当我试图获取元素/属性时,为什么这个Xdocument查询返回null。

我正在尝试获取<version>元素的集合,以便读取它们的属性。示例XML:

代码语言:javascript
复制
<dmodule>
<idstatus>
<dmaddres>
<dmc>Some DMC</dmc>
<dmtitle><techname>My techname</techname><infoname>My infoname</infoname></dmtitle>
<issno issno="004" type="revised">
<issdate year="2016" month="11" day="30"></dmaddres>
<status>
<security class="2">
<rpc>RPC1</rpc>
<orig>ORIG1</orig>
<applic>
<model model="2093">
**<version version="BASE"></version>
<version version="RNWB"></version>**</model></applic>
<techstd>
<autandtp>
<authblk></authblk>
<tpbase>-</tpbase></autandtp>
<authex></authex>
<notes></notes></techstd>
<qa>
<firstver type="tabtop"></qa></status>
</idstatus>
<dmodule>

我就是这样得到<version>元素的:

代码语言:javascript
复制
 XDocument doc = XDocument.Load(sgmlReader);

List<string> applicabilityList = null;

//this doesn't work
//var applics = doc.XPathSelectElements("dmodule/idstatus/status/applic/model/version");

//nor does this
 var applics = doc.Descendants("idstatus").Descendants("applic").Elements("version");

        foreach (var applic in applics)
        {
             string applicVersion = applic.Attribute("version").ToString();
             applicabilityList.Add(applicVersion);

         }

            return applicabilityList;

以上所示的任何查询都不返回任何结果。Cleary在我的查询中犯了一个愚蠢的错误,但我已经不练习了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-25 10:24:03

这是因为您缺少了model元素。

代码语言:javascript
复制
...
<applic>
  <model model="2093">
    <version version="BASE"></ 
...

如果您感兴趣的是version元素,那么只需执行以下操作:

代码语言:javascript
复制
var versions = doc.Descendants("version");
票数 1
EN

Stack Overflow用户

发布于 2017-04-25 10:26:35

这是工作代码

代码语言:javascript
复制
var applics = doc.Descendants("dmodule")
                 .Descendants("idstatus")
                 .Descendants("status")
                 .Descendants("security")
                 .Descendants("applic")
                 .Descendants("model")
                 .Elements("version");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43607963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档