<ARTICLE_PRICE_DETAILS>
<DATETIME type="valid_start_date">
<DATE>2015-07-01</DATE>
</DATETIME>
<DATETIME type="valid_end_date">
<DATE></DATE>
</DATETIME>
</ARTICLE_PRICE_DETAILS>
我如何在元素中获得价值?
我试过这个
var productQuery = (from p in xmlDocument.Descendants("ARTICLE_PRICE_DETAILS")
select new
{
articleDatetime = p.Element("DATETIME")
.Attribute("valid_start_date")
.Value
});
当我尝试使用articleDatetime时,我得到了一个例外。 需要帮助我
答案 0 :(得分:3)
好吧,您似乎试图获得DATE
下DATETIME
元素的值type="valid_start_date"
。
可以通过各种方式完成,其中之一是:
var dates = xmlDocument
.XPathSelectElements("ARTICLE_PRICE_DETAILS/DATETIME[@type='valid_start_date']/DATE")
.Select(e => e.Value)
.ToList();
请注意,这里的大部分工作都是使用XPathSelectElements
方法和适当的xpath表达式完成的。
在不使用xpath选择的情况下也可以实现相同的结果,只需要通过几个linq调用:
var xmlDocument = doc.Descendants("ARTICLE_PRICE_DETAILS")
.Descendants("DATETIME")
.Where(e => e.Attribute("type")?.Value == "valid_start_date")
.Descendants("DATE")
.Select(e => e.Value)
.ToList();
但它看起来不太可读(至少从我的角度来看)。