任何人都可以告訴我爲什麼這個Xdocument查詢返回null時有元素/屬性,我試圖抓住。我怎樣才能得到一個子元素的集合 - 查詢返回null使用Xdocument
我試圖獲得<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;
無論是查詢如上圖所示,不會返回任何結果。 Cleary在我的查詢中發現了一個愚蠢的錯誤,但我沒有練習。
感謝奧菲爾,確實做了工作,爲第二次嘗試在查詢 - 這樣就解決了我的問題。然而,正如你在上面例子中的第一次嘗試中看到的那樣,我確實有Xpathselectelemet查詢中包含的'model'元素,但它不起作用。我嘗試刪除根元素'dmodule',但這也不起作用。 – Daedalus
在第一個中缺少'security'元素 –
不使用第二個示例的原因是因爲元素可能在XML文檔中的某處使用 - 我需要在此特定位置找到它們。再次感謝。 –
Daedalus