簡體   English   中英

我如何獲取子元素的集合-使用Xdocument查詢返回null

[英]How can i get a collection of child elements - query returns null using Xdocument

任何人都可以告訴我為什么當我嘗試獲取元素/屬性時此Xdocument查詢為什么返回null。

我試圖獲取<version>元素的集合,以便我可以讀取它們的屬性。 XML示例:

<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>元素的方式:

 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;

如上所示的任何查詢均不返回結果。 顯然我的查詢中有一個愚蠢的錯誤,但是我沒有實踐。

那是因為您缺少model元素。

...
<applic>
  <model model="2093">
    <version version="BASE"></ 
...

如果您只對version元素感興趣,則可以執行以下操作:

var versions = doc.Descendants("version");

這是工作代碼

var applics = doc.Descendants("dmodule")
                 .Descendants("idstatus")
                 .Descendants("status")
                 .Descendants("security")
                 .Descendants("applic")
                 .Descendants("model")
                 .Elements("version");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM